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