java前後端日期時間交互,UTC轉LocalDateTime

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,會報轉換異常,導致轉換成功。經查閱得知,格式化的長度要跟轉換的字符串長度保持一致,否則就會報錯。(雖然不知道對錯,但換成上面的這種格式化樣式確實成功了)。

參考文章:https://blog.csdn.net/zgxy666/article/details/82805394

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章