2017-08-30 61 views
-2

我目前正在讀JSON格式的日期如下:日期和時區在java中

"dates": { 
    "startdate": "2017-08-29T22:00:00.000UTC"; 
} 

而在我的申請,我設置了JsonFormat如下,以便能夠正確讀取:

@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSS'UTC'") 
private Date startdate; 

但UTC不是我想要使用的時區,我應該更改'UTC'以便能夠在歐洲/巴黎區域讀取我的dateTime?

+1

您想在巴黎時區的「2017-08-29T22:00」或2017-08-29T22:00UTC轉換爲巴黎(2017-08-30T00:00 + 02:00)嗎? ?你在使用傑克遜?或者其他一些圖書館? (這可能與解決方案有關) - 順便說一下,你不能忽略UTC,它與'Date'對象有關(否則你可以得到不同的結果,取決於你忽略它後做什麼)。 – 2017-08-30 18:42:13

+1

目前尚不清楚你想要達到的目標,但是你是否嘗試過'Z'或'Z',這兩者都意味着時區?其中一個可能會做你想做的。 –

回答

2

改變輸入以符合ISO 8601標準。 Z是祖魯語的縮寫,意思是UTC。

String input = "2017-08-29T22:00:00.000UTC".replace("UTC" , "Z") ; 

解析爲Instant對象。

Instant instant = Instant.parse(input) ; 

調整到您所需的時區。

ZoneId z = ZoneId.of("Europe/Paris") ; 
ZonedDateTime zdt = instant.atZone(z) ; 

避免Date類爲麻煩類現在是傳統的,由java.time類取代。