Разбор даты в Java со странной временной зоной - PullRequest
0 голосов
/ 06 апреля 2011

Я получаю даты, отправленные моей заявке в следующем формате:

yyyy-MM-dd'T'HH:mm:ss.SSS-04:00

Проблема в TimeZone, он не соответствует формату Z (-0400) и не следуетформат z (GMT-04: 00).

Есть ли еще одна опция формата, которую мне не хватает, или я могу ввести способ анализа этих часовых поясов?

Ответы [ 3 ]

2 голосов
/ 06 апреля 2011

Подумайте о переключении на Время Joda - оно предлагает гораздо большую гибкость и удобочитаемость, чем библиотеки даты Java, включая обработку этого стиля часового пояса (это одна из ключевых причин, по которой я переключился).

1 голос
/ 07 апреля 2011

Похоже, вы получаете XSD формат dateTime.Если вы хотите придерживаться чистого «из коробки» Java, посмотрите на javax.xml.datatype.XMLGregorianCalendar, который был создан для обработки подобных вещей.

Однако, как сказал другой автор, вам, вероятно, будет прощевремя с использованием сторонней библиотеки, такой как время Joda.Объекты Java Calendar всегда немного громоздки в использовании.

1 голос
/ 06 апреля 2011

Наивный подход быстро развивается и прост.

class TimeTest {
    public static void main(String[] args) {
        String s = "yyyy-MM-dd'T'HH:mm:ss.SSS-04:00";
        String t = "yyyy-MM-dd'T'HH:mm:ss.SSS-0400";
        System.out.println(s + " --> " + fix(s));
        System.out.println(t + " --> " + fix(t));
    }

    static String fix(String s) {
        int last = s.lastIndexOf(":");
        if(last == s.length() - 3) {
            s = s.substring(0,last) + s.substring(last+1);
        }
        return s;
    }
}
...