目錄
時間類相關API
? ? ? ? ?1.Date類
2.SimpleDateFormat類
3.Calendar類
4.JDK8-時區,時間和格式化
5.JDK8-日歷和工具類
時間類相關API
? ? ? ? 以下內容是通過觀看黑馬java的常見API視頻總結加筆記,其中有JDK7以及以前的時間類,包括:Date,SimpleDateFormat,Calendar三個類以及JDK8新增時間相關類,及他們的詳細用法。JDK7時間相關類在多線程環境下會導致數據安全的問題。JDK8的時間日期對象都是不可變的,解決了這個問題。
以前世界標準時間是格林尼治時間/格林威治時間簡稱GMT。
現在世界標準時間UTC已經替換為:原子鐘。時間原點:1970年1月1日00:00:00。
中國的標準時間:世界標準時間+8小時
1.Date類
Date類是JDK寫好的javabean類,在util包下,用來描述時間,精確到毫秒。利用空參構造創建的對象,默認表示系統當前的時間。利用有參構造創建的對象,表示指定的時間。get,set方法,均用long類型表示時間,可以用來獲取時間,或者賦值時間。
2.SimpleDateFormat類
作用:
1.因為Date類只能按照默認樣式展示,所以我們需要通過SimpleDateFormat類來將時間按照我們想要的方式進行表達。
2.可以字符串表示的時間變成Date對象。
?我們可以在java幫助文檔中查找如何進行格式化表示:
?下面進行代碼練習和運行結果:
3.Calendar類
Calendar代表了系統當前時間的日歷對象,可以單獨修改,獲取時間中的年,月,日,非常便利。
注意:Calendar是一個抽象類,不能直接實例化對象。需要通過以下方法得到實例化對象:
Calendar c=Calendar.getInstance();
?底層原理,根據系統的不同時區來返回不同的日歷對象。
?Calendar類中的常用方法:
tips:
- ?該類中用0-11表示月份,0表示一月
- 在外國人眼中,星期日是一周中的第一天,1(星期日)2(星期一)......? 7(星期六)
下面是代碼練習和運行結果
4.JDK8-時區,時間和格式化
JDK7時間相關類在多線程環境下會導致數據安全的問題。
JDK8的時間日期對象都是不可變的,解決了這個問題。
1. ZoneId是一個時區類,可以進行時區相關操作
需要注意的是該類中的時區沒有北京,我們一般使用上海。可以通過下面方法來獲取默認時區或者指定任意時區。
Set<String> zoneIds= ZoneId.getAvailableZoneIds();System.out.println(zoneIds.size());System.out.println(zoneIds);ZoneId zoneId=ZoneId.systemDefault();//獲取默認時區System.out.println(zoneId);ZoneId zoneId1=ZoneId.of("Etc/GMT+8");//指定時區System.out.println(zoneId1);
2.Instant是一個時間戳類,下面列舉常用方法:
3. ZoneDateTime是一個帶有時區的時間,下面是常用方法:
?4.SimpleDateFormat是一個日期格式化類,用于時間的格式化和解析,常用兩個方法:
5.JDK8-日歷和工具類
日歷類有三個:LocalDate表示年,月,日? ?LocalTime表示時,分,秒? LocalDateTime表示年,月,日,時,分,秒。常見方法如下
可以發現JDK8新增時間類中對時間的增刪改查方法類似,均是使用get,with,minus,plus開頭的方法,我們也可以憑借這方便記憶。
工具類也有三個都是用來計算時間間隔的:Duration(側重于秒,納秒)? Period(側重于年月日) ChronoUnit(適用于所有單位)
?
?
工具類中ChronoUnit是最方便的一個,也是我們計算時間間隔的首選。?