我希望将这个问题及其答案作为处理夏令时的最终指南,特别是处理实际转换时。
如果你有什么要补充的,请做
许多系统都依赖于保持准确的时间,问题是由于夏时制而导致的时间变化——向前或向后移动时钟。
例如,一个订单接受系统中的业务规则取决于订单的时间——如果时钟发生变化,规则可能就不那么清晰了。应如何保持订单的时间?当然,有无数的场景——这只是一个例证。
你是如何处理日光节约问题的?您的解决方案包含哪些假设?(在此处查找上下文)
同样重要,如果不是更重要的话:
你尝试了什么但没有奏效?为什么不起作用?
我会对编程、操作系统、数据持久性和其他相关方面感兴趣。
一般的答案很好,但我也希望看到细节,特别是如果它们只在一个平台上提供的话。
您需要了解Olson-tz数据库,可从ftp://elsie.nci.nih.gov/pub http://iana.org/time-zones/.它每年更新多次,以应对世界各地不同国家在冬季和夏季(标准时间和夏令时)之间切换的时间(以及是否切换)的最后时刻变化。2009年,最后一次发布是2009年;2010年为2010n;2011年为2011n;2012年5月底,发布时间为2012c。注意,在两个独立的存档(tzcode20xxy.tar.gz和tzdata20xxy.tar.gz)中有一组代码来管理数据和实际时区数据本身。代码和数据都在公共域中。
这是时区名称的来源,如America/Los_Angeles(和同义词,如US/Pacific)。
如果你需要跟踪不同的区域,那么你需要奥尔森数据库。正如其他人所建议的,您还希望以固定格式(UTC通常是所选的格式)存储数据,并记录生成数据的时区。您可能需要区分时间与UTC的偏移量和时区名称;这会在以后产生影响。此外,知道当前是2010-03-28T23:47:00-07:00(美国/太平洋)可能会或可能不会帮助您解释值2010-11-15T12:30-这可能是在PST(太平洋标准时间)而不是PDT(太平洋夏令时)中指定的。
标准的C库接口对这类东西没有太大的帮助。
奥尔森的数据发生了变化,部分原因是A·D·奥尔森很快就要退休了,另一部分原因是对维护者的版权侵权诉讼(现已驳回)。时区数据库现在由互联网号码分配机构IANA负责管理,并且在首页有一个“时区数据库”链接。讨论邮件列表现在是tz@iana.org; 公告列表是tz-announce@iana.org.