2012-03-23 3 views
2

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

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

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

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

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

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

Существуют ли какие-либо известные проблемы с этим подходом, проблема с летним временем, краевые кейсы и т. Д., Или это стандартный способ обойти это?

+2

не совсем уверен, какой подход вы используете, но большинство ppl сохраняют datetime в DB в UTC, так что вы получаете лучшее «разрешение», так сказать. Не уверен, что это поможет. – Henry

ответ

1

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

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

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

Смежные вопросы