これの続き。
doroyamada.hatenablog.jp
phpの組み込み関数で簡単に書けた。
<?php echo date(DATE_ATOM,mktime(0,0,0) -3600*24); echo PHP_EOL; echo date(DATE_ATOM,strtotime("yesterday")); echo PHP_EOL; ?>
mktime()は指定しない引数には現在の時刻が使われると。
strtotime()がGMTを使うかローカルタイムを使うかは設定次第。
結果。
2023-03-06T00:00:00+09:00 2023-03-06T00:00:00+09:00
<?php $epoch_time = strtotime("yesterday"); $midnight_epoch_time = strtotime('midnight', $epoch_time); echo $midnight_epoch_time; ?>
yesterdayで0時のエポックタイムを返すのでmidnightはなくてもいいはず。
ローカルタイムを使うよう指定してみた。
オブジェクト使いよった。途中で止まったけど。
<?php $timezone = 'Asia/Tokyo'; // ここにローカルタイムのタイムゾーンを指定 $now = new DateTime('now', new DateTimeZone($timezone)); $yesterday = $now->modify('-1 day'); $midnight = new DateTime($yesterday->format('Y-m-d') . ' 00:00:00', new DateTimeZone($timezone)); $midnight_epoch_time = $midnight->getTimestamp(); echo $midnight_epoch_time; ?>
これも2行めでnew DateTime('yesterday', new DateTimeZone($timezone))としたら一発のはず。