2017-08-30 12 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は私が使用したいTimeZoneではありません。ヨーロッパ/パリゾーンでdateTimeを読むには、どうすれば 'UTC'に変更する必要がありますか?

+1

パリのタイムゾーンで '2017-08-29T22:00'を、または' 2017-08-29T22:00UTC'をパリに変換します( '2017-08-30T00:00 + 02:00') ?あなたはジャクソンを使っていますか?または他のライブラリですか? (それは解決策に関係するかもしれません) - ちょうど、あなたはUTCを無視することはできません、それは 'Date'オブジェクトに関連しています(そうでなければ、あなたは無視した後に何をするかによって異なる結果を得ることができます)。 –

+1

あなたが達成しようとしていることは明らかではありませんが、どちらも 'Z'または' z'を試しましたか?それらのうちの1つは、おそらくあなたが望むことをするでしょう。 –

答えて

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) ; 

その厄介なクラスは今java.timeクラスに取って代わら遺産、あるとしてDateクラスを避けてください。

関連する問題