2

この時間の表現に適合するパターンで DateTimeFormatter オブジェクトを作成しようとしています: 2016-07-22T00:00:00.000-05:00。上記の入力文字列で DateTimeFormatter クラスを使用して DateTime オブジェクトを作成しようとしています。

以下の式のさまざまなバージョンを試しましたが、現在、junit テストケースでエラーが発生しているタイムゾーンピース「-05:00」でスタックしています。

java.lang.IllegalArgumentException: Invalid format: "2016-07-22T00:00:00.000-05:00" is malformed at "-05:00"

私が使用している現在のフォーマットパターンは次のとおりです。

yyyy-MM-dd'T'HH:mm:ss.SSSZ

私も試しました:

yyyy-MM-dd'T'HH:mm:ss.SSSTZD
yyyy-MM-dd'T'HH:mm:ss.SSSZZZ
yyyy-MM-dd'T'HH:mm:ss.SSSz
yyyy-MM-dd'T'HH:mm:ss.SSSzzz
yyyy-MM-dd'T'HH:mm:ss.SSS'TZD'

私はJava 7で実行しているので、それが問題を引き起こしているかどうかはわかりません.

4

4 に答える 4

2

目的を達成するために、DateTimeFormatter クラスの静的メソッド「ofPattern」を利用できます。このメソッドは DateTimeFormatter オブジェクトを返します。

また、tnas で示されているように、次の日付と時刻の書式文字列を使用できます。

"yyyy-MM-dd'T'HH:mm:ss.SSSXXX"

DateTimeFormatter test = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSXXX");

コードをテストしたところ、コンパイルされました。

于 2016-08-22T22:29:35.267 に答える
0

パーティーには遅れましたが、タイムスタンプ文字列にタイムゾーン情報を含める必要があります。そうしないと、どのタイムゾーンから 5 時間のオフセットを差し引くかが未定義になります。

UTC から 5 時間遅れたタイムスタンプを解析する場合、文字列は次のようになります。

2016-07-22T00:00:00.000 Z -05:00

-05:00 部分の前の「Z」に注意してください。これは「UTC」の略です。

于 2018-10-29T09:52:34.593 に答える