2012-03-23 38 views
2

使用TimeZone-CFC将时区支持添加到事件管理系统。我正在采用的方法是用户选择事件时区并根据该时区输入日期时间。日期时间在保存时转换为服务器的时区。在将日期时间提交给用户之前,他们将被转换为事件的时区。这个时区方法有什么问题吗?

例如在保存...

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

则呈现日期时间时回到它首先被转化为事件时区像这样的用户...

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

内部日期进行比较,而不关于事件的时区,例如,如果电子邮件计划外出,只需比较当前服务器的日期时间和来自数据库记录的日期时间。

这种方法,夏令时问题,边缘情况等有什么已知的问题,或者是一个标准的方法去做?

+2

不完全确定你使用的是什么方法,但是大多数ppl会将UTC中的日期时间保存在数据库中,这样你就可以得到最好的“分辨率”。不知道这是否有帮助。 – Henry 2012-03-23 23:28:07

回答

1

理想情况下,如果每个事件的事件时区不同,您希望以UTC格式存储所有时间,那么只需将其转换为显示目的。这样,当你转换它们时,它们显示正确,并且可以考虑夏令时等。

如果您将它们存储在事件时区中,并且事件时区例如夏令时交叉,则数据库中的时间现在是错误的。

如果事件总是在单一时区且没有夏令时,那就没问题。