2

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";

UNIX と Windows の両方で、Perl でエポックより前の日付を処理する方法には、Perl 5.8.8 と同じ問題があります。PHP は問題なく正常な日付を示します。

4

3 に答える 3

2

DateTimeを使ってみましたか?

于 2012-10-07T13:09:43.167 に答える
2

負の整数を出力する場合perl、1970 年 1 月 1 日がこの日付形式のゼロ日であるため、これは適切な動作です。https://en.wikipedia.org/wiki/Unix_epochで否定語を検索してください

シェルでの例:

$ date -d "1957-10-04T00:00:00Z" +%s
-386380800

正解です。

于 2012-10-07T13:17:15.690 に答える
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
于 2012-10-07T18:26:17.767 に答える