【发布时间】:2010-06-02 23:45:15
【问题描述】:
我的日历在 PST 的服务器上正常工作,但在生产服务器 (EST) 上,所有活动似乎都提前一天结束。我不确定这是否是时区问题,因为即使有 3 小时的差异,事件也应该在正确的日期显示。
还有其他人遇到过这个问题吗?
【问题讨论】:
-
这是什么日历?这是一道编程题?
标签: timezone fullcalendar
我的日历在 PST 的服务器上正常工作,但在生产服务器 (EST) 上,所有活动似乎都提前一天结束。我不确定这是否是时区问题,因为即使有 3 小时的差异,事件也应该在正确的日期显示。
还有其他人遇到过这个问题吗?
【问题讨论】:
标签: timezone fullcalendar
这是跨越时区障碍时的典型问题。如果只有日期由数据库携带,但数据被转换为时间戳并针对时区进行调整,您会遇到问题 2010-06-02 变为 2010-06-02 00:00 EST 变为 2010-06-01 21:00 PST .
【讨论】:
如果事件提前一天结束但没有提前一天开始,则可能是您的后端脚本没有获取或不遵守来自浏览器的结束日期时区信息。如果事件在太平洋夏令时间午夜(或美国东部夏令时间凌晨 3 点)开始,但在美国东部夏令时间午夜(或太平洋夏令时间晚上 9 点)或格林威治标准时间午夜(或太平洋夏令时间下午 4 点)结束,这将说明事件“提前结束”。浏览器应该发送带有完整日期时间信息的所有事件(例如 '6/3/2010 00:00:00 GMT-0800'),并且后端脚本也会忠实地保存和报告这些信息。
我住在日本,但在北美做了很多开发,所以我经常看到这个问题。我发现考虑格林威治标准时间而不是您自己的家乡时区的所有事件确实有助于开发 - 特别是如果您的任何用户生活在不同的时区。 JS 很好地处理时区信息(除了缺乏对夏令时的认识,它工作得非常好),并且大多数服务器都非常好地处理时区,所以你看到的大多数错误都与客户端脚本发送不完整的日期信息并试图制作做。
还值得检查一下您的应用程序在 2010 年 11 月 7 日凌晨 2:00 是如何工作的,因为那一天是 25 小时,而 2011 年 3 月 13 日是因为那一天只有 23 小时。切换到 DST 是个魔鬼。
【讨论】: