• ベストアンサー

前日の日付取得するには?

localtimeでシステム日付を取得していますが、前日のシステム日付を取得するにはどのようにすればよいのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

スタンダードなやりかたは、まずtimelocalを使って秒表現(エポック秒)に変換しそれから1日分の秒を引くことです。 use Time::Local; $time=timelocal(localtime); $oneDay = 24*60*60; ($d, $m, $y)= (localtime($time - $oneDay))[3 .. 5]; printf "yesterday is %d/%02d/%02d\n",$y + 1900,$m + 1,$d; ------------------------------------------------ CPANなどからDate::Calcをダウンロードすれば、 日付のまま扱えます use Date::Calc qw(Add_Delta_Days); ($day, $month, $year)=(localtime)[3 .. 5]; printf "today is %d/%02d/%02d\n",$year + 1900,$month + 1,$day; ($y, $m, $d)= Add_Delta_Days($year + 1900, $month + 1, $day, -1); printf "yesterday is %d/%02d/%02d\n",$y,$m,$d;

whitelove
質問者

お礼

わかりました。ありがとうございます。

その他の回答 (1)

回答No.1

localtimeの引数に、1日前のtime値を入れればよいのではないでしょうか? time関数はUTCで1970年1月1日 00:00:00 からの秒数を返します。ですので、 ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time - 24*60*60); としたらいかがでしょう?

参考URL:
http://www.rfs.jp/sitebuilder/perl/05/func/localtime.html
whitelove
質問者

お礼

よくわかりました。ありがとうございます。

関連するQ&A