2

好的,这可能是一个简单的问题,但我还没有提出一个可行的解决方案,所以任何可以帮助的人都提前感谢。

考虑以下场景:我们有一个在 MySQL 上运行的 web 应用程序(如果你需要知道的话),它是时间相关的,比如一个在用户指定时间发送电子邮件的应用程序。现在,每个用户都设置了适当的时区/城市,并且为简单起见,服务器在 UTC 上运行。准确的时间是服务器时间 + 时区 + 夏令时。用户希望电子邮件在 2010 年 1 月 4 日下午 5:00 到达他的时间。我的问题是如何获得正确的夏令时?意思是该用户是否在观察 DST 的区域中,如果他/她观察到了 DST?

我的第一个冲动是找到一个给定当前时区/城市的网络服务,它会给你适当的夏令时。到目前为止,我还没有找到一个。我对第二个想法感到灰心,我必须为 DST 制定规则,因为这些规则每年都会发生变化,在某些国家/地区会超过一两天。

非常感谢任何帮助。

4

2 回答 2

1

如果您的编程语言不支持花哨的时区逻辑,您不必自己编写规则。您只需要对zoneinfo数据库的支持进行编程。

于 2009-10-26T22:37:16.723 回答
0

将您的日期存储为自 1970 年 1 月 1 日格林威治标准时间以来的秒数在您的数据库中,您将始终有时间处理。当用户输入他的时间时,使用正确的时区设置适当地转换它,你就完成了。

您的服务器已经在没有时区的情况下运行,所以当时间到来时,它是一个简单的选择。

下面是一些在 LISP 中进行时区转换的代码:

于 2009-10-26T22:30:10.840 回答