- ベストアンサー
前日の日付取得するには?
localtimeでシステム日付を取得していますが、前日のシステム日付を取得するにはどのようにすればよいのでしょうか?
- みんなの回答 (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;
その他の回答 (1)
- spinach-chicken
- ベストアンサー率57% (24/42)
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); としたらいかがでしょう?
お礼
よくわかりました。ありがとうございます。
お礼
わかりました。ありがとうございます。