19

DateTime クラスのparseメソッドのフォーマッタのスタイルは、文字列の正確なスタイルと一致する必要がありますか? たとえば、データベース (Oracle) から TimeStamp オブジェクトを取得し、それを文字列に変換しています。データベースでは、タイムスタンプは次のように保存されます

2012 年 8 月 8 日 12.00.00.000000000 AM

フォーマッターをこのスタイルに設定しました

String pattern = "dd-MMM-yy";

この例外が発生します

java.lang.IllegalArgumentException: Invalid format: "08-AUG-12 12.00.00 AM" is malformed at " 12.00.00 AM"

org.joda.time.format.DateTimeFormatter.parseDateTime(DateTimeFormatter.java:866)

org.joda.time.DateTime.parse(DateTime.java:144)

これは正確には何を意味し、どうすれば修正できますか? フォーマッタを に設定する "yy-MMM-dd hh.mm.ss aa"と、例外は発生しませんが、ブラウザに次のように出力されます: 2008-08-12T00:00:00.000-04:00が、次のように出力する必要があります。"dd-MMM-yy hh:mm:ss aa"

4

2 に答える 2

54

代わりに LocalDateTime を使用します。

String input = "08-AUG-12 12.00.00 AM";
String pattern = "dd-MMM-yy hh.mm.ss aa";

LocalDateTime localDateTime = LocalDateTime.parse(input, DateTimeFormat.forPattern(pattern));

編集

実際のところ、DateTime でも実行できます。

private static String parseDateTime(String input){
     String pattern = "dd-MMM-yy hh.mm.ss aa";
     DateTime dateTime  = DateTime.parse(input, DateTimeFormat.forPattern(pattern));
     return dateTime.toString("dd-MMM-yy hh:mm:ss aa");
}
于 2012-08-28T20:55:29.947 に答える
2

理解した。正しい形式を取得するには、 formatter.print(localDateTime object) を呼び出す必要があり、機能しました。

于 2012-08-28T21:48:25.243 に答える