我如何在Perl中转换时区?

前端之家收集整理的这篇文章主要介绍了我如何在Perl中转换时区?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在将Perl的日期/时间GMT 0转换为GMT -6.

例如,DHCP服务器租用时间采用以下格式:

2010/02/18 23:48:37

我正在尝试将该时间转换到Localtime区域(GMT -6),但需要它来兑现夏令时.

下面的脚本可能是过度的,但我不知道如何从这里进行. (任何建议都会很棒).

my $TIMESTART;

$TIMESTART = "2010/02/18 23:48:37";
$TIMESTART =~ s/\//-/g;

use DateTime;
use DateTime::TimeZone;

use DateTime::Format::MysqL;
my $dt = DateTime::Format::MysqL->parse_datetime($TIMESTART);

my $tz = DateTime::TimeZone->new( name => 'America/Chicago' );

print $tz->offset_for_datetime($dt) . "\n";

它将输出以下行:

2010-02-18T23:48:37
-21600

我需要能够添加-21600到日期以获得GMT -6的本地时区,但我不知道如何通过这个.

解决方法

致电 set_time_zone方法2次:
my $dt = DateTime::Format::MysqL->parse_datetime($TIMESTART);
$dt->set_time_zone('UTC'); ## set timezone of parsed date time
$dt->set_time_zone('America/Chicago'); ## change timezone in safe way

print DateTime::Format::MysqL->format_datetime($dt),"\n"; ## check the result

怎么运行的:

>当您创建没有指定时区的DateTime对象时,将设置“浮动”时区>首先调用set_time_zone将时区更改为UTC而不进行转换>第二次调用set_time_zone将UTC更改为America / Chicago

猜你在找的Perl相关文章