我正在开发一个世界时钟网络应用程序,我想添加一个函数来记录每个位置接下来将如何以及何时进行 DST 更改。
我正在使用DateTime
和DateTime::Timezone
CPAN 模块,它们似乎提供了除此之外的所有可以想象的功能!DateTime::Timezone
是 tz/Olson 数据库的实现。
到目前为止,我正在将本地偏移量与 UTC 进行比较,无论是现在还是提前 24 小时,这使我可以标记效果是什么,但不能准确地标记它何时发生。
我的概念证明每分钟计算一次。我在想下一步是:
使用类似方法为接下来的 365 天创建一个查找表以识别受影响的日期,然后查看这些天内的每个小时
以某种方式解析
DateTime::Timezone
模块中的 DST 规则。
有任何想法吗?我应该注意到我对 Perl 的了解非常基础。
编辑:
看起来另一个选择可能是移植到 PHP 并使用DateTimeZone::getTransitions
. 这确实返回了一个包含所有转换的数组,但 PHP 5.3.0 只是添加了可选参数timestamp_begin
和timestamp_end
参数来限制一个范围。