尝试根据this将给定时间从一个时区转换为另一个时区。 但输出是错误的。尝试了不同的价值但没有运气。 关于什么失踪的任何帮助?
use Date::Manip::DM6;
use DateTime::Format::DateManip;
my $date2 = '2015-03-24 06:00:00';
$date1 = DateTime::Format::DateManip->parse_datetime( $date2);
my $newdate= UnixDate(Date_ConvTZ($date1 , 'EST', 'PST' ),"%Y-%m-%d %T");
print "date is $date1 and newdate is $newdate";
E:> perl test.pl
日期为2015-03-24T06:00:00,newdate为2015-03-23 12:00:00
预期结果是newdate => 2015-03-24 03:00:00
答案 0 :(得分:6)
有two ESTs and two ASTs and two PSTs和五个CST。
AST Arabia Standard Time UTC+03
AST Atlantic Standard Time UTC−04
EST Eastern Standard Time (North America) UTC−05
EST Eastern Standard Time (Australia) UTC+10
PST Pacific Standard Time (North America) UTC−08
PST Philippine Standard Time UTC+08
通常,避免使用时区缩写,因为它们不明确。改为使用抵消。
当我运行没有DateTime :: Format :: DateManip的代码时,我得到了你期望的结果(我无法通过测试)。
use v5.10;
use Date::Manip::DM6;
say UnixDate(
Date_ConvTZ("2015-03-24 06:00:00", "EST", "PST"),
"%Y-%m-%d %T"
);
# 2015-03-24 03:00:00
但是不要在日期库上赌博,为你选择与时区缩写相同的含义,只是不要使用它们。
答案 1 :(得分:1)
答案 2 :(得分:1)
您应该参考documentation for Date-Manip's valid time zone formats。它将接受时区偏移(例如-0500
),时区缩写(例如EST
)或Olson时区标识符(例如America/New_York
)。它还会接受-0500 (EST)
。
我没有尝试过,但我也认为它会接受带有偏移的组合Olson标识符。如果是这样,那么这将是最明确的表示。
请记住,偏移只是时区表示的一部分。许多时区为夏令时切换偏移。如果您总是使用固定偏移量或缩写,则实际上东部时区将遵循东部日光时间(EDT)时,您可能会通过EST。