我有一个时区名称作为输入,例如 '
如何获取当前时间偏移量与GMT的差值(基于当前时间),即输出
PS,如果需要,我正在使用DateTime::TimeZone。
Europe/Istanbul
' 作为字符串。如何获取当前时间偏移量与GMT的差值(基于当前时间),即输出
+2
?PS,如果需要,我正在使用DateTime::TimeZone。
Europe/Istanbul
' 作为字符串。+2
?offset_for_datetime
方法或DateTime的offset
方法获取当前偏移量。需要使用DateTime对象,因为偏移量可能会根据日期时间而变化(主要是由于夏令时)。my $tz_name = 'Europe/Istanbul';
my $dt = DateTime->now( time_zone => $tz_name );
for (1..2) {
my $offset = $dt->offset;
printf("Offset for %s in %s is %+g\n", $dt->iso8601, $tz_name, $offset / 60 / 60);
$dt->add( months => 6 );
}
输出:
Offset for 2015-02-18T18:20:30 in Europe/Istanbul is +2
Offset for 2015-08-18T18:20:30 in Europe/Istanbul is +3
my $offset=DateTime->now(time_zone=>$tzName)->offset
。 - ysth$dt->offset
%z
strftime
变量更加有用。$ perl -MDateTime -E'
say DateTime->now( time_zone => "local" )->strftime("%Y-%m-%dT%H:%M:%S%z")
'
2015-02-18T10:52:40-0800