Невозможно проанализировать строку часового пояса, предоставленную Twitter API

API пользовательской шкалы Twitter предоставляет мне информацию о часовом поясе в его полезной нагрузке двумя различными способами - utc_offset (целое число) и time_zone (Строка)

например, "utc_offset": -18000, "time_zone": "Восточное время (США и Канада)",

Я намерен хранить строковое поле часового пояса в PostgreSQL через мое приложение Spring и хочу иметь возможность получить правильную временную метку позже, используя то же самое.

Это означало бы, что я смогу разобрать time_zone поле для получения информации о часовом поясе, но его формат не соответствует тому, что java.util.TimeZone надеется. Я попробовал это, и потому что он не может разобрать вышеуказанный формат, он возвращается к UTC.

Есть ли библиотека Java, которая понимает формат, заданный Twitter? Трудно представить, что Twitter будет использовать нестандартный формат часовых поясов в своей ленте.

ПРИМЕЧАНИЕ: - Я ищу чисто решение на основе Java, а не Rails

1 ответ

    DateTimeFormatter parser = DateTimeFormatter.ofPattern("zzzz");
    String timeZoneFromTwitter = "Eastern Time (US & Canada)";
    ParsePosition position = new ParsePosition(0);
    ZoneId zid = ZoneId.from(parser.parse(timeZoneFromTwitter, position));
    System.out.println(zid);

Это печатает (по крайней мере, на моем компьютере)

America/New_York

Я, честно говоря, не знаю, насколько это поможет вам, и я признаю, что это на грани обмана. Что действительно происходит, так это то, что форматер анализирует только "восточное время" и останавливается. Этого достаточно, чтобы он мог распознать часовой пояс как Америка /New_York. ParsePosition есть, чтобы указать, что мы не требуем, чтобы он анализировал всю строку.

Ты упомянул java.util.TimeZone, Я призываю вас бросить этот класс и его друзей, они давно устарели. java.timeсовременный API даты и времени Java, также известный как JSR-310, в целом гораздо приятнее работать, так почему бы вам не заняться этим?

Другие вопросы по тегам