簡體   English   中英

SimpleDateFormat 未正確格式化偏移日期時間

[英]SimpleDateFormat not formatting offset date time correctly

我得到一個時間戳如下, 2019-10-17T07:10:39.021+10:30 但是當我解析 SimpleDateFormat 然后再次打印時,它顯示為 2019-10-17T07:40:39.021+11:00

看起來它添加了 30 分鍾到時間然后更改時區。 有沒有辦法解決這個問題。

        Date date = null;       
        String value = "2019-10-17T07:10:39.021+10:30";
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX", Locale.getDefault());       
        System.out.println("input :" + value);
        try {
            date = sdf.parse(value);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        System.out.println("output :" + sdf.format(date));

結果

輸入:2019-10-17T07:10:39.021+10:30

output:2019-10-17T07:40:39.021+11:00

應該與輸入相同。

您擁有2019-10-17T07:10:39.021+10:30的日期字符串由offset組成,因此從 java-8 您可以使用OffsetDateTime

在 ISO-8601 日歷系統中與 UTC/格林威治有偏移的日期時間,例如 2007-12-03T10:15:30+01:00。

OffsetDateTime dateTime = OffsetDateTime.parse(date);

System.out.println(dateTime.toString());   //2019-10-17T07:10:39.021+10:30

為什么要使用Locale.getDefault() ,該參數不是必需的。 您可以嘗試如下調用它嗎?

    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM