2015-09-18 3 views
1

У меня есть приложение, которое получает событие каждый час (через кварц). Так может случиться 24 раза в день.Время тяжело работает в UTC и в другой часовой пояс

Есть 3 исключения раз в течение этого дня, что я не хочу принимать какие-либо действия, когда я получаю событие (все равно должны получать события через кварц, поэтому решение не обновлять кварцевый хрон выражения)

I необходимо настроить время для этих 3 раз в часовом поясе клиента. В этом случае это будет CEST, где наблюдаются летнее (UTC + 2) и зимнее (UTC + 1) время. Время 00:00, 08:00, 16:00, где у меня будет буфер в 5 минут по обе стороны от этих времен.

Так, например, с 08:00, и я получаю событие в любое время между 07:55 и 08:05 Я не буду выполнять никаких действий.

Мое приложение будет работать в UTC, однако время исключения должно быть настроено в CEST и в будущем в других часовых поясах.

Начальное мышление взять текущую дату и отработать раз исключения в UTC для этой даты, но я считаю, что было бы проблемы с этим подходом

Любые идеи?

+0

Какой язык программирования вы хотите сделать? –

+0

C# - язык программирования – Noel

ответ

1

Осторожно, если вы говорите о «местном дне», мероприятие может быть получено 23 или 25 раз в день, в дни, содержащие daylight saving time transitions. Не каждый местный день имеет 24 часа.

Также поймите, что есть несколько часовых поясов, которые имеют переходы DST в полночь. Например, в Бразилии часы будут перемещаться от 2015-10-17 23:59:59 до 2015-10-18 01:00:00, полностью пропуская полночь. Полночь не существует в этот день, поэтому вам придется решить, разрешить ли получение события в 1:00, или совсем нет.

Затем, на 2016-02-20 23:59:59, часы отметят до 2016-02-20 23:00:00. Хотя полночь существует только один раз, ваше «окно», которое простирается до 23:55, повторит дважды. Вам нужно будет решить, хотите ли вы, чтобы событие могло быть получено в любом слоте, или в первом, или во втором.

Идея разработки времени UTC в наступлении заранее заслуживает внимания, но ключ в том, что правило рецидивы хранится в условиях местного времени и часового пояса, и вы не выбрасывайте эту информацию. Вам вполне может понадобиться пересчитать UTC время для определенного события. Это может произойти, когда правительства решают изменить свои правила DST в часовом поясе или базовые смещения. В общем, каждый раз, когда вы применяете обновление часового пояса, вы должны учитывать все будущие UTC-времена, подозреваемые и пересчитанные.

Вы можете получать уведомления о внесении изменений в часовые пояса, подписавшись на список рассылки tz announcements, а затем отслеживать собственную платформу для соответствующих обновлений.

Смотрите также: Daylight saving time and time zone best practices

И мой ответ на How to store repeating dates keeping in mind Daylight Savings Time.