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);