У меня возникла странная проблема с дневным сбережением. У меня есть java-программа, которая должна запускаться каждый день в 00:05 AM, но вчера она работала 23:05. Я использую григорианский календарь, чтобы запланировать эту программу в java. Он никогда не запускался 23:05 до этого, если кто-то вручную не запустил его. Кто-нибудь знает, если это проблема с календарем?Григорианский календарь
ответ
Эта проблема почти наверняка связана с переключателем летнего времени, хотя странно, что это должно происходить около полуночи, так как переключатель DST обычно происходит в 2 часа ночи.
Трудно сказать больше, не зная, в какой часовой зоне установлен ваш компьютер, и видя ваш фактический код.
Не связано ли это с проблемами экономии времени? В предыдущие вечера время было изменено с летнего времени на зимнее время в некоторых частях света.
Думаю, это побежало в 00:05, но в «новое» (зимнее) время было 23:05.
что вы подразумеваете под «новым» временем? – yogsma
@yogsma: Я имею в виду зимнее время. –
Мировое время DST и североамериканское время DST иногда непоследовательны.
В Европе DST меняется в последнее воскресенье октября. http://en.wikipedia.org/wiki/Daylight_saving_time_around_the_world#Europe
В Северной Америке DST меняется в первое воскресенье ноября. http://en.wikipedia.org/wiki/Daylight_saving_time_around_the_world#North_America
Редактировать из-за комментариев, предоставляющих более точную информацию.
В Великобритании (и остальной части ЕС) она изменилась в воскресенье утром –
Это было изменено всего несколько лет назад в США. Возможно, что система или программное обеспечение не были обновлены, чтобы отразить этот закон. – Andy
В лучшем случае это работает на более старой версии Java, и она неадекватно считала, что переход на летнее время начался в воскресенье утром в США.
Внутри, Java хранит время как смещение по GMT ... в частности, количество миллисекунд с 1 января 1970 года 00: 00: 00.000 GMT (задокументировано в описании класса Calendar
).
Если вы не хотите обновлять Java, вы все равно можете использовать Timezone Updater Tool для обновления часовых поясов Java, установленных в системе.
Примечание: предположительно это было зафиксировано на Java 5u6, если вы не находитесь в одном из других часовых поясов, упомянутых в this list.
Я в Центральной Америке Часовой пояс. – yogsma
Вы знаете, что этот переключатель произошел в воскресенье утром в 2 часа ночи, и это расхождение, как говорили, произошло вчера, в «23:05» (или в воскресенье вечером)? – Powerlord
@R. Бемроуз - да, это уже запутывает. – yogsma