如何在Perl中更改日期时间值的时区?

And*_*ers 7 perl timezone solaris epoch

使用此功能:

perl -e 'use Time::Local; print timelocal("00","00","00","01","01","2000"),"\n";'
Run Code Online (Sandbox Code Playgroud)

它将返回一个纪元时间 - 但仅在GMT中 - 如果我想要GMT + 1(系统本地时间(TZ))的结果,我需要改变什么?

提前致谢,

安德斯

jac*_*ade 7

use DateTime;
my $dt   = DateTime->now;
$dt->set_time_zone( 'Europe/Madrid' );
Run Code Online (Sandbox Code Playgroud)

  • 非常干净的答案。以下是时区列表:https://en.wikipedia.org/wiki/List_of_tz_database_time_zones (2认同)

mob*_*mob 4

epochtime 只有一种基于 UTC 的标准定义,并且不同时区没有不同的 epochtime。

如果你想找到gmtime 和 localtime 之间的偏移量,请使用

use Time::Local;
@t = localtime(time);
$gmt_offset_in_seconds = timegm(@t) - timelocal(@t);
Run Code Online (Sandbox Code Playgroud)