2017-04-19 15 views
-2

バックエンドでUTC時刻を生成して、AndroidアプリケーションにWebソケットを使用して送信しています。Java JodaTimeでタイムゾーン情報が正しくありません

問題は次のとおりです。私は日付を表示すると3時間後になります。なぜなら、自分の電話機が+3タイムゾーンにあると仮定しているからです。

以下は、バックエンドコードとAndroidコードの両方からの抜粋です。

バックエンドのコード(それは私が瞬間ライブラリを使用してUTCの日付を生成しています方法です):私のAndroidのアプリケーションで

let d = moment.utc().toISOString(); 

これは私がそれを処理しています方法です:

String sendDate = "2017-04-19T15:41:36.758Z"; //this is an example server response 
DateTimeFormatter dtf = DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"); 
dtf.parseLocalDateTime(sendDate).toDate() 

問題がありますUTCの日付が電話機の現在のタイムゾーンに正しく表示/変換されないため、日付は常に3時間遅れています。

私には何が欠けていますか?

+0

あなたは携帯電話のデフォルトの 'TimeZone'(' DateTimeZone.getDefault() 'の結果)をチェックしましたか? –

+0

あなたは期待されているアウトプットと比べて何を得ていますか? –

+1

引数なしの 'toDate()'が暗黙的にシステムタイムゾーン(Joda-Timeのデータ)を使用することを恐れるので、 'dtf.parseLocalDateTime(sendDate).toDate(DateTimeZone.UTC)'を試してください。そして、あなたの 'LocalDateTime'は明らかにUTC入力に基づいています... –

答えて

0

解決策は、toDate()メソッドのタイムゾーンを指定することです。

dtf.parseLocalDateTime(sendDate).toDate(DateTimeZone.UTC.toT‌​‌​imeZone())

関連する問題