2017-11-08 6 views
0

私はStringの日付と時刻をDateに変換するためにJoda-Timeライブラリを使用しようとしていますが、結果は期待していません。joda time予期しないフォーマット

私が取得サーバーから:

2017年8月11日12時30
2017年10月11日12時30

ジョダはそれを変換します

2017-01-08T12:30:00.000 + 02:00
2017-01-10T12:30:00.000 + 02:00

DateTimeFormatter formatter = DateTimeFormat.forPattern("dd/mm/yyyy HH:mm:ss"); 

// add two :00 at the end for the seconds 
startDate = startDate +":00"; 
DateTime start = formatter.parseDateTime(startDate); 
System.out.println(start.toString()); 

endDate= endDate + ":00"; 
DateTime end = formatter.parseDateTime(endDate); 
+0

08/11/2017 12:30 ===> 2017-01-08T12:30:00.000 + 02:00と10/11/17 12:30 ===> 2017-01-10T12:30:00.000 +02:00 –

+1

"mm"の最初の出現がむしろ "MM"(分ではなく月)でなければならないので、パターン "dd/mm/yyyy HH:mm:ss"は間違いではありません。 –

答えて

1

あなたは月のmmを使用しているためだが、正しいパターンが大文字MMです。詳細についてはdocumentationをご確認ください。

もう1つ。入力に秒(:00)がない場合は、入力文字列の最後に追加する必要はありません。あなたは、単にそれなしでパターンを作成することができます。

// "MM" for month, and don't use "ss" for seconds if input doesn't have it 
DateTimeFormatter formatter = DateTimeFormat.forPattern("dd/MM/yyyy HH:mm"); 

// parse input (without ":00" for the seconds) 
DateTime start = formatter.parseDateTime("08/11/2017 12:30"); 
System.out.println(start.toString()); 

出力は次のようになります。

2017-11-08T12:30:00.000から02:オフセットが00

お知らせ(-02:00)はあなたとは異なります。これは、DateTimeが指定されていない場合、デフォルトのタイムゾーンを使用するためです。

関連する問題