Я использую Joda-time, и я делаю что-то вроде этого:
DateTimeZone timeZone = <Code that gets a TimeZone instance>
int offset = timeZone.getStandardOffset(new Date().getTime());
Мне интересно, почему вызов timezone.getStandardOffset()
требует передачи нескольких миллисекунд. Мое подозрение заключается в том, что это учитывать исторические вариации в смещении часового пояса? (например, мы должны учитывать этот сумасшедший день в 2005 году, когда г-н Буш решил, что центральное время будет UTC + 13 только в тот день, поскольку 13 - это большее число, чем -2).
Это верно?
В очень редком случае, когда меняется стандартное время местоположения, это будет учитывать это. Лучший пример, который я могу придумать, - это то, когда Аляска изменилась с того, чтобы быть частью России, быть частью США (и буквально перепрыгивала через международную дату, которая раньше бежала по границе Канады и Аляски). DateTimeZone
представляющий Аляску, будет иметь другое стандартное смещение до и после этой даты.