1. 程式人生 > 其它 >日期格式處理

日期格式處理

技術標籤:Java學習日記字串java程式語言

文章目錄

前言

時間是一個,我們生活中最常見也是最重要的東西,在不同的國家不同的地區時間的表現方式都不一樣,當然當你獲得一個時間,或則時間戳,你該怎麼讓這個時間符合中國人的審美觀呢,今天我們就來說一下時間的各種處理方法。

一、時間的長整數表示

時間的長整數表示,是Java中最常見的,需要加工才能出現,我們喜歡的,能看懂的時間格式。而在Java中是這樣表示的
程式碼如下(示例):

public class Test01 {

	public static void main(String[] args) {
		// 時間的長整數表示
		System.out.println(System.currentTimeMillis());

	}

程式碼如下(輸出):

1611390612099

輸出的1611390612099表示的是從1970-01-01 00:00:00:000開始到現在所經歷的毫秒數,而在計算機中為了方便儲存時以一個這樣的時間戳來儲存的,所以拿到這麼個時間戳,如果不經過處理,別說普通的沒接觸過程式碼的人看不懂,就連我們搞程式設計的第一次見到都發蒙,所以我們就得對它進行一定的處理,讓它為多數人接受。

二、日期類

作用
java.util.DateJava程式中通常用它表示日期
SimpleDateFormat實現日期和字串之間的轉換
Local表示特定的地理、政治、文化地區
Calendar(*)l日期類,封裝了年月日時分秒和時區
java.sql.Date主要在資料庫中操作日期,因為資料庫中不直接支援 java.util.Date

由於我還沒學到資料庫,還有java.util.Date和Calendar(*)的使用方法基本相同,我們今天主要用的是前三個

二、java.util.Date、SimpleDateFormat、Local的主要用法

1.java.util.Date主要用法

程式碼如下(示例):

// 導包一定是import java.util.Date
import java.util.Date;

public class Test02 {

	public static void main(String[] args) {
		// 獲取時間的Date物件
		Date date = new Date();
		// 獲取當前時間距離1970-01-01    00:00:00:000的毫秒值表示形式
		// 最常用的應該是int型別的,但是int型別的表示範圍不夠了,所以用比int強的long
		long time = date.getTime();
		System.out.println(time);

程式碼如下(輸出):

1611392755401

小結

java.util.Date主要是獲取獲取當前時間距離1970-01-01 00:00:00:000時間戳

2.SimpleDateFormat的主要用法

1.日期的預設格式國際標準表示

程式碼如下(示例):

import java.util.Date;

public class Test03 {

	public static void main(String[] args) {
		// 國際標準
		Date date = new Date();
		System.out.println(date);

	}

}

程式碼如下(輸出):

Sat Jan 23 17:19:08 CST 2021

上面的輸出結果作為一箇中國人看著不太懂,作為一個英語欠佳的中國人看著更不懂,所以我們就得將這個東西格式化輸出,讓人一看就懂的東西。就得用SimpleDateFormat這個小幫手了。

2.Local主要作用

程式碼如下(示例):

import java.util.Locale;

public class Test01 {

	public static void main(String[] args) {
		// 獲取此虛擬機器例項當前預設語言環境值
		Locale locale = Locale.getDefault();
		System.out.println(locale);

	}

}

程式碼如下(輸出):

zh_CN

輸出zh_CN的意思是中國中文,其實就是給SimpleDateFormat提供輔助,讓虛擬機器能識別輸出中文模式。

3.定製日期輸出格式

程式碼如下(例子):

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;

public class Test03 {

	public static void main(String[] args) {
		Date date = new Date();
		System.out.println("格式化前的日期為:"+date);
		// 定製日期格式為yyyy-MM-dd HH:mm:ss
		SimpleDateFormat simpleDateFormat01 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault());
		String time01 = simpleDateFormat01.format(date);
		System.out.println("格式化後的日期為:"+time01);
		// 定製日期格式為yyyy年MM月dd日 HH:mm:ss
		SimpleDateFormat simpleDateFormat02 = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss", Locale.getDefault());
		String time02 = simpleDateFormat02.format(date);
		System.out.println("格式化後的日期為:"+time02);

程式碼如下(輸出):

格式化前的日期為:Sat Jan 23 17:43:28 CST 2021
格式化後的日期為:2021-01-23 17:43:28
格式化後的日期為:2021012317:43:28

小結

說大白話,其實java.util.Date,Local都是為SimpleDateFormat服務的,SimpleDateFormat有還幾個過載的函式,但是我選的是最常用的那個,此函式的需要兩個實參就是java.util.Date,Local提供的。


三、日期字串、日期、時間戳三者轉換(重要!!!!!)

1.日期字串轉換成日期物件

程式碼如下(例子):

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;

public class Test04 {

	public static void main(String[] args) throws ParseException {
		String string = "2021年01月23日 17:43:28";
		System.out.println("解析前的字串為:"+string);
		SimpleDateFormat simpleDateFormat01 = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss", Locale.getDefault());
		Date date = simpleDateFormat01.parse(string);
		System.out.println("解析後的國際標準日期為:"+date);

	}

}

程式碼如下(輸出):

解析前的字串為:2021012317:43:28
解析後的國際標準日期為:Sat Jan 23 17:43:28 CST 2021

注意

時間字串的格式應與SimpleDateFormat中的pattern一致,否則會報Unparseable date: "2021年01月23日 17:43:28這個錯,匹配不上。

2.將時間戳轉換成字串

程式碼如下(例子):

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;

public class Test05 {

	public static void main(String[] args) {
		Date date = new Date();
		//獲取當前時間距離1970-01-01    00:00:00:000的毫秒值表示形式的時間戳
		long timeStamp = date.getTime();
		System.out.println("沒有經過轉換的時間戳為:"+timeStamp);
		SimpleDateFormat simpleDateFormat01 = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss", Locale.getDefault());
		String string = simpleDateFormat01.format(timeStamp);
		System.out.println("經過轉換後的字串為:"+string);

	}

程式碼如下(輸出):

沒有經過轉換的時間戳為:1611397627289
經過轉換後的字串為:2021012318:27:07

3.將字串轉換成時間戳

程式碼如下(例子):

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;

public class Test06 {

	public static void main(String[] args) throws ParseException {
		String string = "2021年01月23日 18:27:07";
		System.out.println("原始字串為:"+string);
		SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss", Locale.getDefault());
		Date date = simpleDateFormat.parse(string);
		System.out.println("字串經過轉換變成的國際標準時間格式:"+date);
		long timeStamp = date.getTime();
		System.out.println("國際標準時間格式轉換成的時間戳為:"+timeStamp);

	}

}

程式碼如下(輸出):

原始字串為:2021012318:27:07
字串經過轉換變成的國際標準時間格式:Sat Jan 23 18:27:07 CST 2021
國際標準時間格式轉換成的時間戳為:1611397627000

總結

有人會問為什麼沒有日期物件轉換成字串呢,其實我已經說過了,向上一個大例子 3.定製日期輸出格式裡面的例子就是了。
從這幾個例子中我們可以發現的點是:
1、時間字串的格式應與SimpleDateFormat中的pattern一致。
2、只要遇見其他時間型別轉成字串的如下面黃色部分都是SimpleDateForma.format。遇見其轉成時間型別的就是SimpleDateForma.parse。
3、導包一定要導對
在這裡插入圖片描述其實時間的日期的轉發還有多,但是基本上都有一個主流,但是最好理解的也有,作為初學者我更注重的是理解,現在的主流排其次吧。