Я пишу вспомогательный метод, который принимает строковое представление даты и возвращает TimeZone.
Например:
input: 2017-11-02T09:30:00-07:00
output : "America/Los_Angeles"
(Здесь ввод PST. Я использую смещение UTC -7:00)
Here is my method
public static String getTimeZone(final String date) {
ZonedDateTime zonedDateTime = ZonedDateTime.parse(date, DateTimeFormatter.ISO_DATE_TIME);
String timezone = TimeZone.getTimeZone(zonedDateTime.getZone()).getAvailableIDs()[0];
System.out.println(timezone);
return timezone;
}
когда я передаю указанную выше дату, я получаю Africa/Abidjan
, что совершенно неверно.
Я предпочитаю "Америка/Лос-Анджелес", но по крайней мере что-то правильное. Здесь то, что я получаю, совершенно неверно в том смысле, что время в Абиджане и Лос-Анджелесе сильно отличается.
как правильно сюда добраться?
ZonedDateTime
), я твердо убежден, что нет смысла также использовать устаревший классTimeZone
. Предпочитаю современныйZoneId
. Его статический методgetAvailableZoneIds
даст вам доступные часовые пояса. - person Ole V.V.   schedule 07.11.2017