前回記事に指摘があったので、朝一のスタバで自分なりにやってみました。
love_and_piece.pl
#!/usr/bin/env perl
use strict;
use warnings;
use Time::Piece;
use Time::Seconds;
# Time::Pieceオブジェクトの取得
print "Time::Piece ",$Time::Piece::VERSION,"\n";
my $t;
# $t = "2014-01-29"; # 入力パラメータとかで渡ってきたとする。
if ($t) {
$t = localtime( Time::Piece->strptime($t, '%Y-%m-%d') );
}
else {
$t = localtime; # 渡ってこなければ現在時刻
}
# 日付や時刻の情報の表示
print $t->ymd,"\n";
# $t += ONE_MONTH; # 一ヶ月後
$t = $t->add_months(1);
print $t->ymd,"\n";
結果
Time::Piece 1.20_01
2014-04-15
2014-05-15
入力パラメータのコメントアウトを外した場合
Time::Piece 1.20_01
2014-01-29
2014-03-01
修正点:
strptime の箇所をlocaltime で囲んだ。
ONE_MONTHで計算すると正確に一カ月にならないので、add_monthsメソッドを使用した。
参考:
Time::Piece とタイムゾーンの甘い罠
Time::Seconds::ONE_MONTH
やべー現場に遅れそうだ。。。大手町のスタバありがとう(笑)