1

我们一直致力于为我们的 Web 应用程序实现时区支持。

这篇很棒的 SO 帖子帮助了我们很多: 夏令时和时区最佳实践

我们已经在 MYSQL 中实现了 OLSON TZ 数据库,并将其用于 TZ 转换。

我们正在构建一个调度应用程序,以便:

我们将在 UTC 时间的特定日期和特定时间发生的所有预订存储在 DateTime 字段中,并使用CONVERT_TZ(). 这很好用。

我们不太确定的是假期和休息之类的东西:

假期只是日期参考,不包括时间部分。因为CONVERT_TZ()不适用于日期对象,我们猜测我们最好只根据用户的时区存储日期值?

id1 id3 startDate   endDate
-----------------------------
3   6   2010-12-25  2011-01-03
4   3   2010-09-22  2010-09-26

一周中的每一天存储期间的重复中断也是如此。我们目前为一周中的每一天存储他们的休息时间,索引为 0-6。因为这些只是时间对象,我们不能使用 CONVERT_TZ() 并假设我们应该将它们作为时间值存储在用户的时区中?

bID sID dayID startTime  endTime
--------------------------------
1   4   1   12:00:00    14:00:00
2   4   4   13:30:00    13:30:00

在这种情况下,对于假期和休息,我们只会在预订时间转换为用户的本地时间之后将它们与预订时间进行比较。

这是处理事情的正确方法,还是我们应该以其他方式存储假期和休息时间,以便我们可以将它们转换为 UTC(不确定这对于休息时间如何工作)。

感谢你的协助!

4

2 回答 2

1

这两种存储格式看起来不错。当您将它们拉出表格时,您只需要将它们转换为用户的本地时间。

实际上,对于休息表,我认为它们名义上已经是当地时间,所以你只需直接与约会的当地时间进行比较。

于 2010-11-16T14:50:38.770 回答
0

我不能很好地理解你的问题,不能说我的回答对你来说是 100% 正确的。但我认为您需要做的是将 DateTime 存储在“本地”时间并存储时区。这样,即使夏令时发生变化(发生这种情况),您也可以正确处理。

http://blogs.windwardreports.com/davidt/2009/11/what-every-developer-should-know-about-time.html上的好文章(是我)。

于 2010-11-16T14:41:09.660 回答