2017-01-23 12 views
-2

私はISO 8601形式の日付が"2017-01-10T14:55:32+01:00"であるとします。ISO 8601のタイムスタンプ文字列をjava.time.OffsetDateTimeに変換する

どのように変換しますか?OffsetDateTime

ここには何の回答も見つかりませんでした。私は以下を試した:

public OffsetDateTime stringToOffsetDateTime() { 
     return OffsetDateTime.from(Instant.parse("2019-12-12T10:39:40-02:00")); 
    } 

しかし、それはDateTimeParseExceptionをスローする。

+3

OffsetDateTime.parse( "2017-01-10T14:55:32 + 01:00"、DateTimeFormatter.ISO_DATE_TIME) ' –

+0

私はdownvotesを理解していません - 私は質問を改善する方法を教えてください – kiedysktos

+1

Lemme推測、downvotesはあなたが努力を示していなかったためかもしれません。通常、私たちは疑問の質問者の最善の試みを期待しています。それは本当に助けになる出発点です。今度はそれを答えに入れました。 :-) –

答えて

0

最短の答えは次のとおりです。

OffsetDateTime.parse("2017-01-10T14:55+01:00") 

それは(DateTimeFormatter.ISO_DATE_TIMEを使用して)、デフォルトではISO 8601フォーマットを認識します。必要に応じて

、あなたはこのように他のformatersを使用することができます。

OffsetDateTime.parse(iso8601String, DateTimeFormatter.ISO_OFFSET_DATE); 

すべてformatersは、ここで閲覧することができます:https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.htmlインスタントからフォーマッタが使用されたので、OPからの試みが失敗した

。これは自然に失敗しました。インスタントは常にUTCなので、可能な場合でもタイムゾーン情報が失われてしまいます。

関連する問題