我正在将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