Java8的常用時間api實用指南
前言
Java 8 提供了一套新的時間 api ,比之前的 Calendar 類要簡單明了很多。常用的有三個類 Instant、LocalDate 、LocalDateTime , Instant 是用來表示時刻的,類似 Unix 的時間,表示從協(xié)調世界時1970年1月1日0時0分0秒起至現(xiàn)在的總秒數(shù),也可以獲取毫秒。LocalDate 表示一個日期,只有年月日,沒有時分秒。LocalDateTime 就是年月日時分秒了。
下面話不多說了,來一起看看詳細的介紹吧
Instant
public static void main(String[] args) { Instant now = Instant.now(); System.out.println("Now secoonds:" + now.getEpochSecond()); System.out.println("Now milli :" + now.toEpochMilli()); }
輸出當前時刻距離 1970年1月1日0時0分0秒 的秒和毫秒
Now secoonds:1541321299
Now milli :1541321299037
LocalDateTime
為了方便輸出時間格式,Java8 提供了 DateTimeFormatter 類來替代之前的 SimpleDateFormat。
public static void main(String[] args) { DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); LocalDateTime now = LocalDateTime.now(); System.out.println("Now: " + now.format(formatter)); }
Now: 2018-11-04 16:53:09
LocalDateTime 提供了很多時間計算的方法,比如 加一個小時,減去一周,加上一天等等這樣的計算,比之前的 Calendar 要方便許多。
public static void main(String[] args) { DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); LocalDateTime now = LocalDateTime.now(); System.out.println("Now: " + now.format(formatter)); LocalDateTime nowPlusDay = now.plusDays(1); System.out.println("Now + 1 day: " + nowPlusDay.format(formatter)); LocalDateTime nowMinusHours = now.minusHours(5); System.out.println("Now - 5 hours: " + nowMinusHours.format(formatter)); }
Now: 2018-11-04 17:02:53
Now + 1 day: 2018-11-05 17:02:53
Now - 5 hours: 2018-11-04 12:02:53
LocalDateTime 還有 isAfter 、 isBefore 和 isEqual 方法可以用來比較兩個時間。LocalDate 的用法和 LocalDateTime 是類似的。
Instant 和 LocalDateTime 的互相轉換
這倆的互相轉換都要涉及到一個時區(qū)的問題。LocalDateTime 用的是系統(tǒng)默認時區(qū)。我們可以先把 LocalDateTime 轉為 ZonedDateTime ,然后再轉成 Instant。
public static void main(String[] args) { DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); LocalDateTime now = LocalDateTime.now(); System.out.println("Now: " + now.format(formatter)); Instant nowInstant = now.atZone(ZoneId.systemDefault()).toInstant(); System.out.println("Now mini seconds: " + nowInstant.toEpochMilli()); }
Now: 2018-11-04 17:19:16
Now mini seconds: 1541323156101
public static void main(String[] args) { DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); Instant now = Instant.now(); System.out.println("Now mini seconds: " + now.toEpochMilli()); LocalDateTime nowDateTime = LocalDateTime.ofInstant(now, ZoneId.systemDefault()); System.out.println("Zone id: " + ZoneId.systemDefault().toString()); System.out.println("Now: " + nowDateTime.format(formatter)); }
Now mini seconds: 1541323844781
Zone id: Asia/Shanghai
Now: 2018-11-04 17:30:44
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。
相關文章
IntelliJ?IDEA教程之clean或者install?Maven項目的操作方法
這篇文章主要介紹了IntelliJ?IDEA教程之clean或者install?Maven項目的操作方法,本文分步驟給大家介紹兩種方式講解如何調試出窗口,需要的朋友可以參考下2023-04-04Java 客戶端向服務端上傳mp3文件數(shù)據的實例代碼
這篇文章主要介紹了Java 客戶端向服務端上傳mp3文件數(shù)據的實例代碼,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2018-09-09SpringCloud_Sleuth分布式鏈路請求跟蹤的示例代碼
Spring Cloud Sleuth是一款針對Spring Cloud的分布式跟蹤工具,本文通過實例代碼介紹了SpringCloud_Sleuth分布式鏈路請求跟蹤,感興趣的朋友跟隨小編一起看看吧2023-02-02Springboot?過濾器、攔截器、全局異常處理的方案處理小結
攔截器是一種動態(tài)攔截方法調用的機制,與過濾器類似,是Spring框架中提供的,用來動態(tài)攔截控制器方法的執(zhí)行,這篇文章主要介紹了Springboot?過濾器、攔截器、全局異常處理,需要的朋友可以參考下2024-03-03