Understanding JodaTime DateTime.parse(string, formatter)
DateTime类的parse方法中的格式化程序的样式是否必须与字符串的确切样式匹配? 例如,我从数据库(Oracle)获取一个TimeStamp对象,并将其转换为字符串。 TimeStamp在数据库中的存储方式如下:
08-AUG-12 12.00.00.000000000 AM
我将格式化程序设置为此样式
我得到这个例外
1 2 3 4 5
| 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代替:
1 2 3 4
| 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来执行此操作:
1 2 3 4 5
| 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");
} |
-
当我使用localDateTime.toString();时,它仍然像我在原始消息中指示的那样打印出来。
-
@罗伯特为时已晚,我想评论:)您自己解决了。
弄清楚了。 为了获得正确的格式,您必须调用formatter.print(localDateTime对象)并且它可以工作。
-
您还可以指定要在toString中使用的模式。localDateTime.toString(" dd-MMM-yy hh:mm:ss aa");