2010-11-01 2 views
0

У меня возникла странная проблема с дневным сбережением. У меня есть java-программа, которая должна запускаться каждый день в 00:05 AM, но вчера она работала 23:05. Я использую григорианский календарь, чтобы запланировать эту программу в java. Он никогда не запускался 23:05 до этого, если кто-то вручную не запустил его. Кто-нибудь знает, если это проблема с календарем?Григорианский календарь

ответ

3

Эта проблема почти наверняка связана с переключателем летнего времени, хотя странно, что это должно происходить около полуночи, так как переключатель DST обычно происходит в 2 часа ночи.

Трудно сказать больше, не зная, в какой часовой зоне установлен ваш компьютер, и видя ваш фактический код.

+0

Я в Центральной Америке Часовой пояс. – yogsma

+1

Вы знаете, что этот переключатель произошел в воскресенье утром в 2 часа ночи, и это расхождение, как говорили, произошло вчера, в «23:05» (или в воскресенье вечером)? – Powerlord

+0

@R. Бемроуз - да, это уже запутывает. – yogsma

2

Не связано ли это с проблемами экономии времени? В предыдущие вечера время было изменено с летнего времени на зимнее время в некоторых частях света.

+1

В США это было перенесено на следующую неделю. – yogsma

+3

Это не что иное, как сбивающее с толку столько людей. Мне жаль, что они просто не исчезнут с летним временем. – Andy

+0

@ Энди: Слушай, слушай! – Powerlord

0

Думаю, это побежало в 00:05, но в «новое» (зимнее) время было 23:05.

+0

что вы подразумеваете под «новым» временем? – yogsma

+0

@yogsma: Я имею в виду зимнее время. –

1

Мировое время 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

Редактировать из-за комментариев, предоставляющих более точную информацию.

+0

В Великобритании (и остальной части ЕС) она изменилась в воскресенье утром –

+0

Это было изменено всего несколько лет назад в США. Возможно, что система или программное обеспечение не были обновлены, чтобы отразить этот закон. – Andy

1

В лучшем случае это работает на более старой версии Java, и она неадекватно считала, что переход на летнее время начался в воскресенье утром в США.

Внутри, Java хранит время как смещение по GMT ... в частности, количество миллисекунд с 1 января 1970 года 00: 00: 00.000 GMT (задокументировано в описании класса Calendar).

Если вы не хотите обновлять Java, вы все равно можете использовать Timezone Updater Tool для обновления часовых поясов Java, установленных в системе.

Примечание: предположительно это было зафиксировано на Java 5u6, если вы не находитесь в одном из других часовых поясов, упомянутых в this list.