joda DateTime解析器错误
我使用jodatime来解析日期时间字符串,如下所示:
public static void main(String [] args){ String s =“16-Jul-2009 05:20:18 PDT”; 字符串模式=“dd-MMM-yyyy HH:mm:ss z”; DateTimeFormatter fm = DateTimeFormat.forPattern(patterns); DateTime d = fm.parseDateTime(s); 的System.out.println(d); }
我明白了
线程“main”中的exceptionjava.lang.IllegalArgumentException:格式无效:“16-Jul-2009 05:20:18 PDT”在“PDT”格式错误 at org.joda.time.format.DateTimeFormatter.parseDateTime(DateTimeFormatter.java:683)
怎么了? 如何正确解析时区?
从DateTimeFormat
javadoc :
模式语法主要与
java.text.SimpleDateFormat
兼容 – 无法解析时区名称,并支持更多符号。 所有ASCII字母都保留为模式字母,其定义如下:
最好的办法是回退到SimpleDateFormat
,然后根据Date#getTime()
构造DateTime
。
String s = "16-Jul-2009 05:20:18 PDT"; String pattern = "dd-MMM-yyyy HH:mm:ss z"; Date date = new SimpleDateFormat(pattern, Locale.ENGLISH).parse(s); DateTime d = new DateTime(date.getTime()); System.out.println(d);