java.time是JDK8以後引入的日期相關API,主要是用來解決過去在使用Date 、Calendar 中存在的一些問題
過去遇到的問題
SimpleFormat格式化只針對Date ,Calendar 不可以使用java.time 中常用的幾個類:
LocalDate
LocalTime
LocalDateTime
靜態方法:
now() :依照類的名稱可以得到對應的日期、時間、日期和時間of(xx , xx, xx, xx...) :依照類的名稱可以將物件設定為of 參數所寫的日期、時間、日期和時間getXXX() :獲取對應的xxx ,如當月第幾天,當年第幾天等等withXXX() :返回一個物件,將原本所設定的日期、時間等進行修改,原本物件所設定的日期時間不會被修改。(Calendar 類使用setXXX() 時,會將實例化所設定的日期時間改變,可能會造成不必要的錯誤)plusXXX() :返回一個物件,將原本所設定的日期、時間等加上一個值,原本物件所設定的日期時間不會被修改minusXXX() :返回一個物件,將原本所設定的日期、時間等減去一個值,原本物件所設定的日期時間不會被修改Instant :類似於Date 類,主要用於時間戳靜態方法:
now() :返回一個基於格林威治標準時間 設定的物件ofEpochMilli(long xxx) :返回一個基於參數 設定的毫秒數所對應的時間toEpochMilli() :返回Instant 實例化物件的毫秒數的值(long 類型)DateTimeFormatter :類似SimpleDateFormat ,將日期時間和字串間進行轉換,主要對於LocalDate LocalTime LocalDateTime 三個類靜態方法:
ofPattern("yyyy-MM-dd HH:mm:ss") :依照參數的字串,將日期時間轉換成指定格式format(日期時間物件) :返回一個對應參數日期時間的字串,參數需放符合ofPattern 格式的日期時間物件,parse(String xxx) :返回一個TemporalAccessor 類型的物件(TemporalAccessor 是接口),LocalDate LocalTime LocalDateTime 都有將TemporalAccessor 實現