[英]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.