perl之在 Perl 中将时区名称转换为 GMT 时区偏移量

98°冷暖 阅读:17 2024-08-05 10:48:10 评论:0

我有一个 timzeone 名称作为输入,例如 'Europe/Istanbul' 作为字符串。
如何获取 GMT 的当前偏移量(基于当前时间),即 +2 作为输出?
PS,我用的是DateTime::TimeZone如果这可能有帮助

请您参考如下方法:

您可以使用 DateTime::TimeZone 的 offset_for_datetime 获取当前偏移量方法或 DateTime 的 offset方法。需要 DateTime 对象,因为偏移量可能会因日期时间而异(主要是因为夏令时)。

my $tz_name = 'Europe/Istanbul'; 
 
my $dt = DateTime->now( time_zone => $tz_name ); 
for (1..2) { 
    my $offset = $dt->offset; 
    printf("Offset for %s in %s is %+g\n", $dt->iso8601, $tz_name, $offset / 60 / 60); 
    $dt->add( months => 6 ); 
} 

输出:

Offset for 2015-02-18T18:20:30 in Europe/Istanbul is +2 
Offset for 2015-08-18T18:20:30 in Europe/Istanbul is +3 


标签:程序员
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号