2017-01-04 8 views
0

私はこの例外を取得しています、私は私のDateTimeFormatパターンと現在のDateTimeを取得しようとしているが、私は例外を取得しています...ジョダのDateTime無効な形式

//sets the current date 
DateTime currentDate = new DateTime(); 
DateTimeFormatter dtf = DateTimeFormat.forPattern("dd/MM/YYYY HH:mm").withLocale(locale); 
DateTime now = dtf.parseDateTime(currentDate.toString()); 

、私が誰であるかを理解することはできませんデフォルトのtoSring形式の解析日付をしようとするため、不正な形式

java.lang.IllegalArgumentException: Invalid format: "2017-01-04T14:24:17.674+01:00" is malformed at "17-01-04T14:24:17.674+01:00" 
+0

をチェックアウト解析していますあなたは、文字列として日付をフォーマットしようとしています。また、DateTimeオブジェクトに文字列を解析しようとしていますか? – assylias

+0

これはDateTimeオブジェクトでなければなりません – besmart

+0

あなたは* DateTimeで始まっています - なぜそれをテキストに変換して戻すのですか? –

答えて

2

にこの行DateTime now = dtf.parseDateTime(currentDate.toString());を与えることは正しくありません。

DateTime currentDate = new DateTime(); 
DateTimeFormatter dtf = DateTimeFormat.forPattern("dd/MM/YYYY HH:mm").withLocale(locale); 
String formatedDate = dtf.print(currentDate); 
System.out.println(formatedDate); 
DateTime now = dtf.parseDateTime(formatedDate); 
System.out.println(now); 
1

あなたが日付を解析するために、間違ったフォーマットを使用している:あなたはパターンと同じようにフォーマットされた文字列を解析する必要があります。あなたはあなたが得るtoStringで文字列に変換した後に解析しようとしている日付を印刷した場合:

2017-01-04T14:24:17.674+01:00 

この日付の文字列は、パターンdd/MM/YYYY HH:mmに準拠していません。あなたの元currentDateと同じ時間を表し、別のインスタンスを取得します

DateTimeFormatter dtf = DateTimeFormat.forPattern("YYYY-MM-dd'T'HH:mm:ss.SSSZ") 
             .withLocale(locale); 

このDateTimeFormatterと解析:文字列に再びDateTimeオブジェクトにcurrentDateを変換し解析するには、次のパターンを使用する必要があります。

DateTimeFormatterの詳細については

、オプションがJavaDoc

関連する問題