joda DateTime парсер ошибка - PullRequest
4 голосов
/ 18 июня 2011

Я использую jodatime для разбора строк даты и времени следующим образом:

    public static void main(String[]args){
        String s ="16-Jul-2009 05:20:18 PDT";
        String patterns = "dd-MMM-yyyy HH:mm:ss z";

            DateTimeFormatter fm = DateTimeFormat.forPattern(patterns);
            DateTime d=fm.parseDateTime(s);
            System.out.println(d);

    }

Я получаю

Exception in thread "main" java.lang.IllegalArgumentException: Invalid format: "16-Jul-2009 05:20:18 PDT" is malformed at "PDT"
    at org.joda.time.format.DateTimeFormatter.parseDateTime(DateTimeFormatter.java:683)

что не так?как правильно разобрать часовой пояс?

1 Ответ

9 голосов
/ 18 июня 2011

Из DateTimeFormat javadoc :

Синтаксис шаблона в основном совместим с java.text.SimpleDateFormat - имена часовых поясов не могут быть проанализированы иподдерживается еще несколько символов.Все буквы ASCII зарезервированы как буквы шаблона, которые определены следующим образом:

Лучше всего вернуться к SimpleDateFormat, а затем построить DateTime на основе Date#getTime().

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