2017-03-17 9 views
0

Zoneを持つUTC形式の日付文字列があります。私はそれをJavaの8.0を使用して+/-ゾーンのSQLタイムスタンプに変換する必要があります。 日に00:それはゾーン02を追加しませんJavaを使用した秘密のUTC日付文字列からSQLタイムスタンプへ8

Parsed: 2016-10-14T10:12:18.100+02:00 

2016-10-14T08:12:18.000+00:00または2016-10-14T8:12:18.000Z

String utcDate = "2016-10-14T10:12:18.100+02:00"; 
ZonedDateTime result = ZonedDateTime.parse(utcDate, DateTimeFormatter.ISO_DATE_TIME); 
System.out.println("Parsed: " + result); 

出力に変換する

2016-10-14T10:12:18.000+02:00ニーズ。

+3

最初は、「UTC」とは何かを誤解していると思います。これは*フォーマットではありません。...参照フレームです。主にタイムゾーンに使用されています。 "2016-10-14T10:12:18.000 + 02:00"という文字列は、UTCから2時間のオフセットがあります。 –

+0

私の悪い。私は時間帯のあるISO形式を意味します。 +/-オフセットでUTCに変換する必要があります。 –

+0

@AtulKumar質問を編集して間違いを修正し、明快さを加えてください。あなたのサンプルコードが無関係であると思われるので、 "SQLタイムスタンプ"の意味を説明してください。 –

答えて

1

現在、あなたは値を変換するために何もしていません - あなたはZonedDateTimeを使用していますので、提供された時間帯(少なくともオフセット)は保持されています。 (。あなたが実際にタイムゾーンを持っていないとして、私は、むしろZonedDateTimeよりも、このためOffsetDateTimeを使用すると思います)

あなたはwithZoneSameInstantを使用することができ、次のいずれか

ZonedDateTime utc = result.withZoneSameInstant(ZoneOffset.UTC); 

それともInstantに変換します。

Instant instant = result.toInstant(); 

(その後、適切にフォーマットしてください)。

関連する問題