2016-06-14 4 views
1

私の入力文字列がある:なぜ文字列を日付に変換し、2つの異なる文字列を返す文字列に戻すのですか?

"2016-06-13T14:20:09.866Z" 

私の出力文字列は次のとおりです。

"2016-06-13T10:20:09.866-04" 

なぜ彼らは異なっていて、どのように私はそれの入力と同じ形式で出力することができますか?

Iは、文字列から日付へ変換

:ユニットテストにおいて

DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSX", Locale.ENGLISH); 
dateFormat.parse((String) date)); 

、私はバック文字列に解析された日付を変換:

DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSX", Locale.ENGLISH); 
dateFormat.format(date); 
+0

日付の最後の 'z'は何ですか?それは何かを示していますか? – Codebender

+0

@Codebender UTC – assylias

答えて

3

二つの日付が同じである - のみフォーマット(1つは午後2時、もう一方は午前10時、オフセットは-4時間=午後2時頃です)。

だから、私はあなたが望むのは、UTCのタイムゾーンでも2番目の文字列を持つことだと思います。その場合、2番目のDateFormatのタイムゾーンを設定するだけです:

DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSX", Locale.ENGLISH); 
dateFormat.setTimeZone(TimeZone.getTimeZone("UTC")); 
関連する問題