在 PHP 中准确获取昨天的午夜日期

Bri*_*man 1 php cron date

我应该对此有什么问题吗?

我正准备在午夜时分开始一份 cron 工作

0   0   *   *   *    /usr/bin/php    myscript.php
Run Code Online (Sandbox Code Playgroud)

该脚本设置为以 MySQL 时间戳格式定义前一天的日期。

$midnightyesterday2 = (new DateTime())->setTime(0, 0);
$midnightyesterday2->modify('-1 day');
$midnightyesterday = $midnightyesterday2->format("Y-m-d H:i:s");
Run Code Online (Sandbox Code Playgroud)

回声输出:

2017-04-08 00:00:00

$endofdayyesterday2 = (new DateTime())->setTime(23, 59, 59);
$endofdayyesterday2->modify('-1 day');
$endofdayyesterday = $endofdayyesterday2->format("Y-m-d H:i:s");
Run Code Online (Sandbox Code Playgroud)

回声输出:

2017-04-08 23:59:59

显然这个示例输出工作正常,因为我在 15:22:00 这样做。

如果脚本由于某种原因提前运行了一小部分,我是否只是偏执,认为在午夜设置 cron 作业可能会导致冲突甚至半秒。

有没有更好的方法来确保昨天的日期与脚本设置为恰好在午夜运行?

我需要它恰好在午夜运行,因为该脚本基于lastmodified我的 echo 建议的 MySQL时间戳,即使在 12:01 运行它也可能会在该分钟内添加一些额外的行。

Dee*_*yal 5

请尝试以下代码以获取具有确切小时数的昨天的开始和结束日期。

date("Y-m-d H:i:s", strtotime("yesterday")); // 2018-09-18 00:00:00

date("Y-m-d H:i:s", strtotime("today 1 sec ago")); // 2018-09-18 23:59:59
Run Code Online (Sandbox Code Playgroud)