java8 各種時間轉換方法


java8 各種時間轉換方法

本來按照常理日期時間是一個很簡單的東西,只需要根據一個時間戳就可以算出當前的時間了。但這其實只是初級的想法,是因為你的項目還沒有到跨時區部署的程度,一旦你的項目要部署到其他時區就會發現,同一個時間戳,在中國代表8點,在日本就代表9點了。Java對日期,日歷及時間的處理一直以來都飽受詬病,尤其是它決定將java.util.Date定義為可修改的以及將SimpleDateFormat實現成非線程安全的,所以隨着java版本的升級,產生了一系列代表時間的類

  • java.util.Date
  • java.sql.Date
  • java.sql.Time
  • java.sql.Timestamp
  • java.util.Calendar
  • java.time.Instant
  • java.time.LocalDate
  • java.time.LocalTime
  • java.time.LocalDateTime
  • java.time.ZonedDateTime

其中后5個是java8以后才可以使用的時間類,是不是玲瓏滿目,目不暇接,除此之外這些時間類還有一系列配套格式轉換工具,更是數不勝數。但java8以后的時間類就基本成熟了,可以適應目前所有的需求,下面逐一介紹java8以后的實踐類

1.Instant

它代表的是時間戳
你可已使用instant.toEpochMilli()來輸出Long類型的毫秒數
其他java8以后的時間類型都可以通過toInstant獲取它

2.ZoneId

ZoneId代表的是時區,獲取系統時區:

ZoneId zone = ZoneId.systemDefault();

    
    
   
   
           
   
   
  
  
          
  • 1

中國使用的北京時間是在東八區,日本使用的東京時間是東九區,要根據不同時區獲取時區類可使用一下方法:
ZoneId zoneId = ZoneId.of(“UTC+8”);//獲取東八區的時區

3.LocalDateTime

LocalDate內部存儲有日期和時間
通過 LocalDate.now()可以獲取當前時間,但這個當前時間是基於0時區的,而我們中國位於東八區,所以需要傳入我們的時區,

ZoneId zoneId = ZoneId.of("UTC+8");
 LocalDate.now(zoneId)

    
    
   
   
           
   
   
  
  
          
  • 1
  • 2

返回的才是北京時間,

4.LocalDate 和LocalTime

LocalDate代表的是日期(年月日),LocalTime代表的是時間(時分秒),用法與LocalDateTime基本相同

5DateTimeFormatter 時間格式化成String

DateTimeFormatter dtf2 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String str= dtf2.format(dateTime);

    
    
   
   
           
   
   
  
  
          
  • 1
  • 2

其中dateTime變量可以是LocalDateTime 也可以是LocalDate和LocalTime

原文地址:https://blog.csdn.net/c0411034/article/details/81436093


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM