Как извлечь TimeZone из экземпляра java.util.Date?
Там нет такой вещи. Date
просто представляет количество миллисекунд, прошедших с эпохи Unix, которая была полуночью 1 января 1970 года по UTC. Это не связано с определенной системой календаря или часовым поясом. Другими словами, если мы с другом разговариваем по телефону (с нулевой задержкой;) и я щелкаю пальцами, мы оба договоримся о Date
, при котором этот щелчок тоже место - даже если я используя григорианский календарь, он использует юлианский календарь, и даже если я в Лондоне и он в Нью-Йорке. Это то же самое мгновенное время .
Как узнать, применимо ли переход на летнее время? Я полагаю, что я могу узнать это, выполнив timeZone.getDSTSavings, но проблема, с которой я сталкиваюсь, заключается в том, что даже если я укажу дату в моей системе на 1 февраля 2012 года, я все равно получаю значение как положительный (я думаю, 3600000)
В идеале используйте Время Joda вместо java.util.Date
/ Calendar
/ TimeZone
, но в пределах TimeZone
вы можете использовать TimeZone.getOffset(long)
, чтобы найти смещение от UTC или TimeZone.inDaylightTime(Date)
, чтобы просто дать вам ответ да / нет.
Как перевести время EST в EDT или наоборот?
Обычно это неправильный вопрос - потому что в любой момент времени применяется или EST или EDT. Обычно вы конвертируете из одного часового пояса в другой, и «EDT» и «EST» не являются разными часовыми поясами - они имеют разные смещения в пределах одного и того же часового пояса. Тот факт, что вы просите об этом, говорит о том, что вы, возможно, неправильно начинаете моделировать свои данные (что, к сожалению, легко сделать со значениями даты / времени). Пожалуйста, дайте нам больше информации, и мы сможем помочь вам больше.