揮発性のメモ2

http://d.hatena.ne.jp/iww/

Time::Piece で日時の計算がおかしい

1年ごとの日付を表示してみる

#!/usr/bin/perl

use Time::Piece;
use Time::Seconds;

my $tp = localtime;
for( my $i=0; $i<13; $i++ ){
    $tp += ONE_YEAR;
    print $tp->strftime("%F %T\n");
}
$ ./hoge.pl
2014-08-20 17:10:07
2015-08-20 22:58:57
2016-08-20 04:47:47
2017-08-20 10:36:37
2018-08-20 16:25:27
2019-08-20 22:14:17
2020-08-20 04:03:07
2021-08-20 09:51:57
2022-08-20 15:40:47
2023-08-20 21:29:37
2024-08-20 03:18:27
2025-08-20 09:07:17
2026-08-20 14:56:07

時刻の部分がぐっちゃぐちゃになる。 なんだこれバグだろ
Time::Pieceって標準モジュールらしいけど こんなんで大丈夫なのか?


と思ったらバグじゃなかった!
http://search.cpan.org/~msergeant/Time-Piece-1.08/Seconds.pm
1年は365.24225日、31556930秒だった。 きついわ・・・

#!/usr/bin/perl -l

use Time::Piece;
print "ONE_YEAR=". ONE_YEAR;
print "seconds=". (ONE_YEAR % 60);
print "minutes=". ( (ONE_YEAR/60) % 60);
print "hours=". ( (ONE_YEAR/3600) % 24);
print "days=". ( ONE_YEAR/86400 );
ONE_YEAR=31556930
seconds=50
minutes=48
hours=5
days=365.24224537037