Perlの1ライナーで日付を操作する | 桐一葉

桐一葉

美味しい肴と趣味の話

たまにAIXでシェルを書くとき、日付操作に困ります。
ぐぐっても日付操作の1ライナーでいいものが出てこないので作ってみました。
Perlはまったく知らないので、結局1行で作るのは断念して2行になっちゃいましたが。

EPOCHTIME=`perl -MTime::Local -e 'my ($year, $mon, $mday)= ($ARGV[0], $ARGV[1],$ARGV[2]) ;$year -= 1900; $mon--; my $epoch_sec = timelocal(0, 0, 0, $mday, $mon, $year); printf $epoc_sec ;' ${YEAR} ${MONTH} ${DAY}
TOMORROW=`perl -e '($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime($ARGV[0]+86400);printf("%d%02d%02d\n",$year+1900, $mon+1,$mday);' ${EPOCHTIME}`

1行目で指定日をエポックタイムに変換して、2行目で86400足して翌日を出してます。
日付チェックは1行目のリターンコードで。