2016-08-22 6 views
0

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

私は以下の式の多くの異なるバージョンを試してみましたが、現在のタイムゾーンピース「-05:00」で立ち往生しています

私は私のJUnitテストケースでエラーを取得しています:

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上で動作しているので、それが問題の原因であるかどうかはわかりません。

答えて

-1

APIのJavadocはパターンを記述する:あなたは、あなたが望むものを達成するためには

2016-08-22T18:34:26.604-03:00 
+0

これは動作しますが、Stringで終了するのではなく、最後にDateTimeオブジェクトを作成しようとしています。 – user007

1

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX"); 
Date date = new Date(); 
System.out.println(sdf.format(date)); 

出力された:https://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html

私はこのコードをテストしてみましたDateTimeFormatterクラスの静的メソッド "ofPattern"を利用できます。このメソッドは、DateTimeFormatterオブジェクトを返します。

そしてTNASによって示されるように、あなたは次の日付と時刻のフォーマット文字列を使用することができますが:

"YYYY-MM-dd'T'HH:MM:ss.SSSXXX"

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

Iコードをテストし、コンパイルします。

+0

これはコンパイルされますが、XXXは有効なパターンコンポーネントではないため動作しません。 – user007

+0

私はあなたが混乱していると信じています.tnasがコンパイルを投稿したコードは、yyyy-MM-dd'T'HH:mm:ss.SSSXXXが有効な日付と時刻の書式文字列であることを証明しています。 –

+0

コンパイルと実行は2つの異なることです。コードをコンパイルするには、単に文字列入力が必要な.ofPattern()メソッドにStringを入力するだけだからです。あなたは "Hello World"を入力することができ、コードはコンパイルされます。それが適切に動作するコードを使用するとは限りません。 – user007

関連する問題