Java時間類從此變得清晰明了
- 2021 年 8 月 13 日
- 筆記
- Java進階03——常見API
Java時間類
Java時間類分為Date 日期類和Calendar 日曆類,相信很多小夥伴在初學時會對這個兩個類的用法、區別以及有什麼聯繫會感到疑惑,似乎懂了,但又不能具體說清,今天再帶你來清晰的再次認識它倆!
Date 類
為了更直觀了解,話不多說,直接上程式碼
【參考程式碼】
package date;
import java.util.Date;
public class Test {
public static void main(String[] args) {
Date d = new Date(); // 系統時間——運行程式時的時間
System.out.println(d); // Fri Aug 13 08:03:49 CST 2021
//使用Date類中對應的get方法用來獲取具體時間:年月日,時分秒
System.out.println(d.getYear() + 1900);// 年
System.out.println(d.getMonth()+1);// 月
System.out.println(d.getDate());// 日
System.out.println(d.getHours());// 時
System.out.println(d.getMinutes());// 分
System.out.println(d.getSeconds());// 秒
//Date類常用方法getTime();
//getTime()——獲取到時間的毫秒形式 返回的是long
System.out.println(d.getTime());// 1628813591697
}
}
輸出結果:
Fri Aug 13 08:13:11 CST 2021
2021
8
13
8
13
11
1628813591697
註:年份是從1900年開始的;月份是從0開始的。
Markdown程式碼塊里是不顯示刪除線的,這裡截圖給大家。通過上述get方法,Date類可以獲取具體時間,不過,這些函數的 API 不易於實現國際化,官方不再推薦使用Date類來獲取時間,推薦使用Calendar類。因此,這裡刪除線代表可以用但不推薦。
總結:對於Date類我們需要掌握:
- new Date() 可以獲取到系統時間
- getTime() 能獲取到時間的long形式,可以用來計算時間差
Calendar類
上面我們已經知道Date類不再推薦用來獲取時間,而是推薦Calendar類,話不多說直接上程式碼
註:Calendar 日曆類,是一個抽象類,裡邊提供了很多操作日曆欄位的方法如:YEAR、 MONTH、 DAY OF MONTH、HOUR。因此不可以去new對象。雖然抽象類不能創建對象,但是jdk官方提供了一個實例對象的操作:
Calendar cal = Calendar.getInstance();
我們通過這條程式碼就是直接造了一個Calender的對象
【參考程式碼】
package date;
import java.util.Calendar;
import java.util.Date;
public class TestCalendar {
public static void main(String[] args) {
Calendar cal = Calendar.getInstance();// 實例化對象
System.out.println(cal);//java.util.GregorianCalendar[time=1628815192318,areFieldsSet=true,....]
//用Calendar類get方法來獲取具體時間
System.out.println(cal.get(Calendar.YEAR));// 年 2021
System.out.println(cal.get(Calendar.MONTH)+1);// 8月 月份從0開始
System.out.println(cal.get(Calendar.DATE));// 日
System.out.println(cal.get(Calendar.HOUR));// 時
System.out.println(cal.get(Calendar.MINUTE));// 分
System.out.println(cal.get(Calendar.SECOND));// 秒
//用Calendar類set方法設置時間--->用於計算
cal.set(Calendar.YEAR, cal.get(Calendar.YEAR)+10);// 十年以後 2031
System.out.println(cal.get(Calendar.YEAR));
cal.set(Calendar.MONTH,cal.get(Calendar.MONTH)+4);// 3月以後 11 月份從0開始的
System.out.println(cal.get(Calendar.MONTH));
//...同理日,時分秒都可以設置並計算
}
}
輸出結果:
java.util.GregorianCalendar[time=1628815192318,areFieldsSet=true,….]
2021 // 年
8 // 月
13 // 日
9
5
22
2031 // 十年以後
11 //3月以後
【參考程式碼】
Calendar cal = Calendar.getInstance();// 實例化對象
get()方法解釋:
get(你想獲取的Canendar對象的資訊)
例:cal.get(Calendar.YEAR);// 獲取年份
set()方法解釋:
set(需要設置的Calendar對象,獲取該對象你需要資訊)--->設置就可以用來計算
例:
cal.set(Calendar.YEAR, cal.get(Calendar.YEAR)+10);// 計算十年以後
System.out.println(cal.get(Calendar.YEAR));
Date類和Calendar類相互轉換:
Date類和Calendar類既然有聯繫那必然可以相互轉換,下面這段程式碼讓大家更直觀的了解:
【參考程式碼】
Date d = new Date();
System.out.println(d);
Calendar cal = Calendar.getInstance();//實例化對象
cal.getTime();
System.out.println(cal.getTime());
/*
輸出結果:
Fri Aug 13 09:35:45 CST 2021
Fri Aug 13 09:35:45 CST 2021
*/
Calendar實例化的對象.getTime()就能獲取到當前的系統時間,即一個Date對象,也就是Date d==cal.getTime();
Calendar類轉成了Date類
Calendar cal = Calendar.getInstance();
Date d = cal.getTime();
Date類轉成了Calendar類
Date date = new Date();
Calendar cal = Calendar.getInstance();
cal.setTime(date);
總結:對於Calendar類我們需要掌握:
- get()方法 獲取到時間的某一部分
- set()方法 設置時間 – -> 計算時間:系統已經幫我們設置好了,不用擔心二月有多少天等問題,計算時間十分方便
- getTime()方法,得到的是一個Date類型的實例
- setTime()方法,將Date類型的實例給到Calendar類
格式化時間
通過上面的學習,我們知道Date,Calendar類通過引用可以進行時間的格式化,將年月日、時分秒一個個例舉出來,可見比較繁瑣,而SimpleDateFormat類是專門幫我們格式化時間的工具類,format()方法 和 parse()方法 能夠幫我們在時間和字元串之間相互轉換,十分方便。它在java.text包中。
時間轉成字元串:format(Date date)方法
format(Date) 幫我們把時間轉成字元串,格式化時間。字元串的格式為SimpleDateFormat類定義對象時設置的時間格式
【時間格式】:yyyy-MM-dd HH:mm:ss
【參考程式碼】
package Simple;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.logging.SimpleFormatter;
public class Test {
public static void main(String[] args) {
Date d = new Date();
System.out.println(d); //Thu Aug 12 08:40:08 CST 2021 不美觀
//設置格式化時間的模式,我們常用yyyy-MM-dd HH:mm:ss這個字元串模式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// 時間格式
String s = sdf.format(d); // 格式化時間
System.out.println(s); // 2021-08-12 08:45:09
}
}
字元串轉成時間:parse(String string)方法
【參考程式碼】
package Simple;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
public class Test2 {
public static void main(String[] args) throws ParseException {
Scanner sc = new Scanner(System.in);
System.out.println("請輸入一個時間(yyyy-MM-dd HH:mm:ss):");
String s = sc.nextLine();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date d = sdf.parse(s); // 把字元串轉成時間
System.out.println(d); //Thu Aug 12 12:25:21 CST 2021
}
}
程式執行,輸入和輸出結果如下:
請輸入一個時間(yyyy-MM-dd HH:mm:ss):
2021-08-12 12:25:21
Thu Aug 12 12:25:21 CST 2021
總結
看到這裡,相信各位看官都對Java中的時間類的知識和使用有了一定了解,感謝各位看到這裡!願你韶華不負,青春無悔!
注: 由於自己剛剛開始學習Java不久,語言文字描述、技術等各方面還不是很好,如果文章有任何錯誤和建議,請各位大佬盡情評論留言!如果這篇文章對你有些許幫助,希望可愛親切的您點個贊推薦一手,非常感謝啦!