关于时区:如何为Web应用程序保留准确的时间(夏令时)?

How to preserve accurate time (daylight saving) for a web application?

好吧,这可能是一个简单的问题,但我还没有找到一个有效的解决方案,所以对任何能提供帮助的人,都要提前表示感谢。

考虑下面的场景:我们有一个运行在MySQL上的Web应用程序(如果需要知道的话),它依赖于时间,比如说一个在用户指定的时间发送电子邮件的应用程序。现在,每个用户都已设置了正确的时区/城市,服务器在UTC上运行以简化操作。准确的时间是服务器时间+时区+夏令时。用户希望电子邮件在2010年1月4日下午5:00联系他。我的问题是如何获得正确的日光节约?这意味着该用户是否处于观察DST的区域,如果是,他/她是否观察到了DST?

我的第一个冲动是找到一个给定当前时区/城市的Web服务,它可以为您提供适当的日光节约。到目前为止我还没有找到。第二个想法让我感到气馁,那就是我必须为DST制定规则,因为这些规则每年都会发生变化,在某些国家甚至会超过一两天。

非常感谢您的帮助。


如果您的编程语言不支持复杂的时区逻辑,您就不必自己编程规则。您只需要为ZoneInfo数据库编程支持。


将日期存储为1970年1月1日格林尼治标准时间以来的秒数,并将其存储在数据库中,这样您就可以一直处理时间问题。当用户输入他的时间时,使用正确的时区设置将其适当地转换,您就完成了。

您的服务器已经在没有时区的情况下运行,因此当时间到来时,很容易选择。

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