UTC:協調世界時,又稱世界統一時間、世界標準時間、國際協調時間。
LocalDateTime是java8新增的一種時間類型
轉換思路,先將UTC格式的時間轉換成Date類型的,然後將Date類型的時間轉換成LocalDateTime類型的。
public static LocalDateTime utcToLocalDateTime(String utcTime){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
Date utcDate = null;
try {
utcDate = sdf.parse(utcTime);
} catch (ParseException e) {
e.printStackTrace();
}
Instant instant = utcDate.toInstant();
ZoneId zoneId = ZoneId.systemDefault();
LocalDateTime localDateTime = instant.atZone(zoneId).toLocalDateTime();
return localDateTime;
}
測試數據:
String utcTime = "2018-08-06T10:00:00.00Z";
測試結果:2018-08-06T18:00
東八區時間比UTC時間多8個小時,結果正確。
注意事項:SimpleDateFormat指定的格式化類型如上面代碼所示,剛開始時指定的yyyy-MM-dd HH:mm:ss,會報轉換異常,導致轉換成功。經查閱得知,格式化的長度要跟轉換的字符串長度保持一致,否則就會報錯。(雖然不知道對錯,但換成上面的這種格式化樣式確實成功了)。