Невозможно проанализировать строку часового пояса, предоставленную 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, в целом гораздо приятнее работать, так почему бы вам не заняться этим?