我在Perl的1/1/1970纪元之前格式化并处理日期,日期以负整数形式返回:
my $time=timelocal(0, 0, 0, 1, 1, 1969);
print "$time\n";
$theTime = localtime($time);
print "the time is good: $theTime\n\n";
如何处理Perl中的纪元之前的日期,在unix和windows上都有同样的问题Perl 5.8.8。 PHP显示日期正常没有问题。
答案 0 :(得分:2)
您是否尝试过使用DateTime?
答案 1 :(得分:2)
如果perl
打印一个负整数,这是一个很好的行为,因为01/01/1970是这个日期格式的零日。在https://en.wikipedia.org/wiki/Unix_epoch
shell中的一个例子:
$ date -d "1957-10-04T00:00:00Z" +%s
-386380800
这是正确的。
答案 2 :(得分:2)
我需要将此负数传递给localtime或其他函数以返回格式化日期时间数组。
好的,什么阻止了你?
# ActivePerl on Windows
>perl -E"say ''.localtime(-386380800)"
Thu Oct 3 20:00:00 1957
# Linux
$ perl -E'say "".localtime(-386380800)'
Thu Oct 3 16:00:00 1957
# Cygwin
$ perl -E'say "".localtime(-386380800)'
Thu Oct 3 16:00:00 1957