我正在将Perl的日期/时间GMT 0转换为GMT -6.
例如,DHCP服务器租用时间采用以下格式:@H_301_3@
2010/02/18 23:48:37@H_301_3@
我正在尝试将该时间转换到Localtime区域(GMT -6),但需要它来兑现夏令时.@H_301_3@
下面的脚本可能是过度的,但我不知道如何从这里进行. (任何建议都会很棒).@H_301_3@
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@H_301_3@
解决方法
致电
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
怎么运行的:@H_301_3@
>当您创建没有指定时区的DateTime对象时,将设置“浮动”时区>首先调用set_time_zone将时区更改为UTC而不进行转换>第二次调用set_time_zone将UTC更改为America / Chicago@H_301_3@