昨日の0時のunixタイムスタンプをphpで得るその後

 これの続き。
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

 ChatGPTさんに聞いてみた。

<?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))としたら一発のはず。