【问题标题】:Are there any problems with this timezone approach?这种时区方法有什么问题吗?
【发布时间】:2012-04-08 09:52:18
【问题描述】:

使用TimeZone-CFC 为事件管理系统添加时区支持。我采用的方法是让用户选择事件时区并根据该时区输入日期时间。日期时间在保存时转换为服务器的时区。在将日期时间返回给用户之前,它们会转换为事件的时区。

例如保存时...

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

然后在将日期时间返回给用户时,它首先会像这样转换为事件时区...

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

在内部比较日期时不考虑事件的时区,例如,如果计划发送一封电子邮件,只需将当前服务器日期时间与数据库记录中的日期时间进行比较。

这种方法是否存在任何已知问题、夏令时问题、极端情况等,或者是一种标准的解决方法?

【问题讨论】:

  • 不完全确定您使用什么方法,但大多数人将日期时间保存在 UTC 中的 DB 中,因此可以说您获得了最佳“分辨率”。不确定这是否有帮助。

标签: sql-server-2005 coldfusion timezone


【解决方案1】:

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

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

如果事件总是在一个没有夏令时的时区,那很好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-10
    • 2010-12-30
    • 2013-09-08
    • 2019-03-31
    相关资源
    最近更新 更多