理解JodaTime DateTime.parse(string,formatter)
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"
我没有得到exception,但它在浏览器中打印如下: 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));
编辑
事实上,您也可以使用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对象)并且它可以工作。