e10*_*100 5 php perl timezone datetime dst
我正在开发一个世界时钟网络应用程序,我想添加一个功能来记录每个位置接下来将进行DST更改的方式和时间.
我正在使用DateTime和DateTime::TimezoneCPAN模块,它们似乎提供了除此之外的所有可能的功能!DateTime::Timezone是tz/Olson数据库的实现.
到目前为止,我正在将本地偏移量与UTC进行比较,无论是现在还是提前24小时,这使我可以标记效果,但不确切地说它是什么时候发生的.
我的概念证明每分钟计算一次.我认为下一步是:
在接下来的365天内使用类似的方法创建查找表以识别受影响的日期,然后查看那些日期内的每个小时
以某种方式解析DateTime::Timezone模块中的DST规则.
有任何想法吗?我应该注意到我对Perl的了解非常基础.
看起来另一种选择可能是移植到PHP并使用DateTimeZone::getTransitions.这确实返回了所有转换的数组,但PHP 5.3.0只添加了可选timestamp_begin和timestamp_end参数来限制范围.
对象的未记录属性为您提供_rules了一个DateTime::TimeZone对象数组DateTime::TimeZone::OlsonDB::Rule.这些编码了纪念的开始和结束.
my $o = DateTime::TimeZone->new(name => 'Europe/Vienna')->_rules->[1];
say sprintf "%s summertime ends at %s on %s in %s each year", $o->name, $o->at, $o->on, $o->month;
Run Code Online (Sandbox Code Playgroud)
我建议你提交一个错误来请求将这个API公开并记录下来,以便你的代码可以依赖它,并且DT维护者会正确地支持它.
| 归档时间: |
|
| 查看次数: |
2751 次 |
| 最近记录: |