天天看點

jdk8中LocatDateTime的應用

目前的項目開發中,大部分項目還是在使用jdk7或者jdk8,并不是最新的jdk版本不好用,而是選擇比較穩定且夠用的就行。

需求: 在開發中,我們經常需要使用到時間,jdk7中經常使用如下

Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//目前時間
String dateTime = sdf.format(date);
           

問題: jdk7中的Date是線程不安全的,且與sql中Date同名,還有處理時區問題麻煩。

解決問題:jdk8使用了新的時間Api

LocatDateTime date = LocatDateTime.now();
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
//目前時間
String dateTime = dtf.format(date);

           

還有國際時間的擷取:

LocalDateTime now = LocalDateTime.now(Clock.systemUTC());
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
//目前國際時間
String dateTime = dtf.format(date);
           

**還有各時區的擷取:**通過提供的一個類ZonedId的getAvailableZoneIds方法可以擷取到一個Set集合,集合中封裝了600個時區。

//擷取所有的時區
Set<String> zoneIds = ZoneId.getAvailableZoneIds();
LocalDateTime date = LocalDateTime.now();
//不同時區的時間
for(String zoneId:zoneIds){
    ZonedDateTime dateTime = date.atZone(ZoneId.of(zoneId));
    System.out.println(dateTime);
}
           

新時間Api的LocalDateTime中,我在使用中發現了比較便捷的方法是

plusHours():目前時間加幾個小時

minusHours():目前時間減幾個小時

相對的加減天數也有;

【結束】希望能幫到您,本人在實習期間,有興趣交個朋友阿