加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

我如何在Perl中转换时区?

发布时间:2020-12-15 22:02:30 所属栏目:大数据 来源:网络整理
导读:我正在将Perl的日期/时间GMT 0转换为GMT -6. 例如,DHCP服务器租用时间采用以下格式: 2010/02/18 23:48:37 我正在尝试将该时间转换到Localtime区域(GMT -6),但需要它来兑现夏令时. 下面的脚本可能是过度的,但我不知道如何从这里进行. (任何建议都会很棒). my
我正在将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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读