DateTimeクラスの parse メソッドのフォーマッタのスタイルは、文字列の正確なスタイルと一致する必要がありますか?たとえば、データベース(Oracle)からTimeStampオブジェクトを取得し、それを文字列に変換しています。データベースには、TimeStampは次のように保存されます
08-AUG-12 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"
として印刷する必要があります
代わりに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));
[〜#〜] edit [〜#〜]
実際のところ、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");
}
理解した。正しい形式を取得するには、formatter.print(localDateTimeオブジェクト)を呼び出す必要があり、機能しました。