我试图通过文档找到答案,但无法回答这个问题:perl中的DateTime
接受哪些时区文字?
CEST
无效。对于CET
,输出是当前时间,但我们当前激活了CEST
时区。
我现在的位置:我想得到当前的时间,并了解CET
中的时间。
如果服务器在CEST
上运行,那么它应该给出当前时间-1h。如果服务器在CET
上运行,它应该给出当前时间。
我的方法是:
$av_loc_TESTHOUR = DateTime->now(time_zone=>'CET')->strftime('%H');
它给出了服务器的当前时间作为结果,但应该给出当前时间-1h。
来自DateTime
模块的文档:
time_zone参数可以是标量对象,也可以是
DateTime::TimeZone
对象。一个字符串将作为其"name"参数简单地传递给DateTime::TimeZone->new
方法。此字符串可以是Olson DB时区名称("America/Chicago")、偏移字符串("+0630")或单词"floating"或"local"。有关更多详细信息,请参阅DateTime::TimeZone
文档。
此处提供了它所指的"了解更多详细信息"文档。
它所指的"Olson"数据库是标准的IANA TZ数据库,您可以在此处找到其标识符。
像"CET"
这样的标识符仅在数据中用于向后兼容性目的。您应该使用完全限定的基于位置的时区标识符,例如"Europe/Paris"
。