Есть ли проблемы с этим подходом часового пояса? - PullRequest
2 голосов
/ 24 марта 2012

Добавление поддержки часовых поясов в систему управления событиями с использованием TimeZone-CFC . Подход, который я использую, состоит в том, чтобы пользователь выбирал часовой пояс события и вводил дату и время на основе этого часового пояса. Дата и время сохраняются в часовой пояс сервера. Прежде чем представить пользователю дату и время, они конвертируются в часовой пояс события.

Например, при сохранении ...

<cfqueryparam value="#application.tz.castToServer(eventStartDateTime, eventTimeZone)#" cfsqltype="cf_sql_timestamp" />

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

<cfset eventStartTime = application.tz.castFromServer(startDateTime, eventTimeZone) />

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

Есть ли какие-либо известные проблемы с этим подходом, проблема перехода на летнее время, пограничные случаи и т. Д., Или это стандартный способ решения этой проблемы?

1 Ответ

1 голос
/ 26 марта 2012

В идеале, если часовой пояс события отличается для каждого события, которое вы хотите сохранить все время, в формате UTC, тогда конвертируйте их только для целей отображения. Таким образом, при их преобразовании они отображаются правильно и могут учитывать летнее время и т. Д.

Если вы храните их в часовом поясе события, а часовой пояс события пересекает, например, летнее время, то время в базе данных теперь неверно.

Если бы события всегда были в одном часовом поясе без перехода на летнее время, было бы хорошо.

...