Quartz.NET и проблема перехода на летнее время - PullRequest
1 голос
/ 10 января 2012

У нас есть настройка триггера cron Quartz.NET, которая должна выполнять задание по следующему расписанию:

В 02:00 часов в часовом поясе торговцев ежедневно

Однако, когда переход на летнее времяВремя (DST) возникает отклонения, например:

  • Когда часовой пояс продавца перемещается с +2 по Гринвичу до +3 GMT, задание не выполняется.
  • При перемещении часового пояса продавцас +3 по Гринвичу до +2 по Гринвичу, задание выполняется дважды.

Мы уже знаем, что такое поведение задуманно (http://www.quartz -scheduler.net / faq.html # daylight), ноЧто люди используют в качестве решения этой проблемы DST?

Cheers

Billy Stack

Ответы [ 2 ]

1 голос
/ 05 ноября 2012

Только что возникла та же проблема, хотя в моем случае не было запланировано срабатывания триггера между 0:00 и временем изменения летнего времени (2:00 в США). Вместо этого у меня была работа, которая работает в понедельник-пятницу в 8 часов утра, поэтому она выполнялась дважды в понедельник, 5 ноября, на следующий день после смены летнего времени.

Если вы прочитали раздел часто задаваемых вопросов, связанный с вопросом, это имеет смысл. Триггер Cron просыпается, запускает задание, а затем вычисляет в следующий раз, чтобы проснуться. Когда он проснулся в пятницу в 8 утра, он рассчитывал в следующий раз работать в понедельник в 8 утра. Тем не менее, к утру понедельника то, что раньше было 8 утра, стало 7 утра, поэтому в тот момент курок сработал. А потом, когда он запустился, следующий раз был «правильно» рассчитан как 8 утра, так что в этот раз он тоже запустился.

Надеюсь, это поможет кому-то изо всех сил понять проблему.

1 голос
/ 29 сентября 2012

Ссылка, на которую вы указываете, может быть обновлена ​​примерно через три года (!) С тех пор, как вы задали этот вопрос.Казалось бы, задание не должно выполняться дважды.

Я не уверен, «02:00» официально «происходит» в США, когда начинается переход на летнее время, поэтому можно было бы решить проблему пропуска выполнения задания в 02:00, установив для нее значение 01:59:59(cron триггер "59 59 1? *"), пока вы были в Северной Америке.Другие страны могут измениться в другое время ночи.Например, в Европе изменение происходит в 01:00, поэтому было бы лучше установить триггер в 02: 00: 01

.
...