dポイントプレゼントキャンペーン実施中!

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

A 回答 (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;
    • good
    • 1
この回答へのお礼

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

お礼日時:2005/01/07 13:14

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/local …
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/01/07 13:11

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!