【发布时间】:2012-12-11 13:14:47
【问题描述】:
我有 2 台 linux 机器需要运行 perl 脚本并访问数据库。 出于任何原因,日期本身是正确的,但从 Perl 返回的纪元有 1 小时的差异,导致在一台机器上具有 UTC 纪元时间戳,而在另一台机器上具有所需的 CET。
A 日期:
2012 年 12 月 11 日星期二 13:34:09 CET
日期:
2012 年 12 月 11 日星期二 13:33:20 CET
为了检查发生了什么,我构建了一个简约示例。 该脚本使用 Time::HiRes 并收集 localtime->epoch 来生成日期。 我构建了一个简约的以下脚本来输出行为:
#/usr/bin/perl
#
use Time::HiRes qw(time);
use Time::Piece;
#
my $date = Time::Piece->strptime(localtime->epoch,"%s");
print "$date->datetime"."\n";
print $date->tzoffset."\n";
print $date->epoch."\n";
输出机器A:
2012 年 12 月 11 日星期二 12:35:43->日期时间 0 1355229343
输出机器B:
2012 年 12 月 11 日星期二 13:34:25->日期时间 0 1355232865
因此,正如您所见,时区一定有问题。相差一个小时。但我不知道在哪里看以及配置什么,因为日期本身会输出正确的时间。
【问题讨论】:
-
perl -le'print time'给了什么? -
您的脚本不使用 Time::HiRes。 (它加载模块,但不使用它。)