时区转换仅限日期和时间 - 是否有必要?

时间:2010-11-08 23:54:23

标签: mysql date time timezone convert-tz

我们一直致力于为我们的网络应用程序实施时区支持。

这篇伟大的SO帖子帮助了我们:Daylight saving time and time zone best practices

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

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

我们在DateTime字段中存储在UTC时间内特定时间在特定日期发生的所有预订,并使用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(不确定这对休息有用)​​。

感谢您的协助!

2 个答案:

答案 0 :(得分:1)

两种存储格式看起来很好。当你将它们拉出桌面时,你只需要将它们转换为用户的本地时间。

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

答案 1 :(得分:0)

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

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