使用TimeZone-CFC为事件管理系统添加时区支持。我正在采取的方法是用户选择事件时区并根据该时区输入日期时间。保存时,日期时间将转换为服务器的时区。在将日期时间呈现给用户之前,他们将转换为事件的时区。
例如保存...
<cfqueryparam value="#application.tz.castToServer(eventStartDateTime, eventTimeZone)#" cfsqltype="cf_sql_timestamp" />
然后当将datetime呈现给用户时,它首先被转换为事件时区,就像这样......
<cfset eventStartTime = application.tz.castFromServer(startDateTime, eventTimeZone) />
比较内部日期而不考虑事件的时区,例如,如果计划将电子邮件发送出去,只需将当前服务器日期时间与日期时间记录中的日期时间进行比较。
这种方法是否存在任何已知问题,夏令时问题,边缘情况等,或者是一种标准的解决方法?
答案 0 :(得分:1)
理想情况下,如果事件时区的每个事件都是您想要存储的所有时间,则以UTC格式然后仅转换它们以用于显示目的。这样,当你转换它们时,它们会正确显示,并且可以考虑夏令时等。
如果您将它们存储在事件时区中并且事件时区超过夏令时,则数据库中的时间现在是错误的。
如果事件总是在一个没有夏令时的单个时区,那就没问题。