目前的項目開發中,大部分項目還是在使用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():目前時間減幾個小時
相對的加減天數也有;
【結束】希望能幫到您,本人在實習期間,有興趣交個朋友阿