Java常用API(Part2)
Java API(Part2)
最近剛學(xué)Java,隨便寫點(diǎn)學(xué)習(xí)筆記
Part1見

Part2主要是時(shí)間管理相關(guān)的類,含JDK8以前的Date,SimpleDateFormat,Calendar
JDK8以后新增的時(shí)間類ZoneId時(shí)區(qū),Instant時(shí)間戳,ZonedDateTime帶時(shí)區(qū)的時(shí)間,DateTimeFormatter用于時(shí)間的格式化和解析,LocalDate年月日,LocalTime時(shí)分秒,LocalDateTime年月日時(shí)分秒
以及計(jì)算時(shí)間間隔的工具類Duration精確計(jì)算秒,納秒,Period計(jì)算時(shí)間間隔(年月日),ChronoUnit能計(jì)算所有單位的時(shí)間間隔
Date
全世界的時(shí)間有一個(gè)統(tǒng)一的計(jì)算標(biāo)準(zhǔn) 以前:格林尼治時(shí)間/格林威治時(shí)間(Greenwich Mean Time)簡(jiǎn)稱GMT 目前世界標(biāo)準(zhǔn)時(shí)間:由銫原子的振動(dòng)頻率計(jì)算出來的時(shí)間,作為世界標(biāo)準(zhǔn)時(shí)間(UTC)
中國(guó)標(biāo)準(zhǔn)時(shí)間:世界標(biāo)準(zhǔn)時(shí)間+8h
Date時(shí)間類是JDK寫好的Javabean類,用來描述時(shí)間,精確到毫秒 利用空參構(gòu)造創(chuàng)建的對(duì)象,默認(rèn)表示系統(tǒng)當(dāng)前時(shí)間 利用有參構(gòu)造創(chuàng)建的對(duì)象,表示指定的時(shí)間

SimpleDateFormat
作用
格式化:把時(shí)間變成我們喜歡的格式
解析:把字符串表示的時(shí)間變成Date對(duì)象



上述可在API幫助文檔中獲取詳情
例:將2000-11-11轉(zhuǎn)為2000年11月11日
Calendar
Calendar代表了系統(tǒng)當(dāng)前時(shí)間的日歷對(duì)象,可以單獨(dú)修改,獲取時(shí)間中的年,月,日 細(xì)節(jié)1:Calendar是一個(gè)抽象類,不能直接創(chuàng)建對(duì)象,而是通過一個(gè)靜態(tài)方法獲取到子類對(duì)象 細(xì)節(jié)2:月份返回0~11,如果取出的是0,實(shí)際上是1月 細(xì)節(jié)3:星期日是一周中的第一天,1表示星期日,2表示星期一
獲取Calendar日歷類對(duì)象的方法:

底層原理: 會(huì)根據(jù)系統(tǒng)的不同時(shí)區(qū)來獲取不同的日歷對(duì)象,默認(rèn)表示當(dāng)前時(shí)間.會(huì)把時(shí)間中的紀(jì)元,年,月,日,時(shí),分,秒,星期等等都放到一個(gè)數(shù)組當(dāng)中.


JDK8以后新增的時(shí)間類
JDK7:代碼麻煩,日期對(duì)象的計(jì)算和比較要先求出毫秒值.在多線程環(huán)境下回導(dǎo)致數(shù)據(jù)安全的問題 JDK8:簡(jiǎn)單,而且時(shí)間日期對(duì)象都是不可變的,解決了多線程環(huán)境下的數(shù)據(jù)安全問題
ZoneId時(shí)區(qū)
方法名 說明 static Set getAvailableZoneIds() 獲取Java中支持的所有時(shí)區(qū) static ZoneId systemDefault() 獲取系統(tǒng)默認(rèn)時(shí)區(qū)(可在Windows設(shè)置修改) static ZoneId of(String zoneId) 獲取一個(gè)指定時(shí)區(qū)
Instant時(shí)間戳

ZonedDateTime帶時(shí)區(qū)的時(shí)間

細(xì)節(jié):JDK8新增的時(shí)間對(duì)象都是不可變的,如果我們修改了,增加了,減少了時(shí)間,調(diào)用者是不會(huì)發(fā)生改變的,而是產(chǎn)生一個(gè)新的時(shí)間
DateTimeFormatter用于時(shí)間的格式化和解析

LocalDate,LocalTime,LocalDateTime
LocalDate:年月日 LocalTime:時(shí)分秒 LocalDateTime:年月日時(shí)分秒

LocalDateTime可以轉(zhuǎn)為L(zhǎng)ocalDate和LocalTime,用以下方法

LocalDate:
LocalTime
LocalDateTime
Duration計(jì)算時(shí)間間隔(秒,納秒)較精確
Period計(jì)算時(shí)間間隔(年,月,日)
ChronoUnit 時(shí)間間隔(所有單位)重點(diǎn)掌握