我以前从未见过这样的事情。这是返回预期答案(一系列五个日期)的函数的一部分......有时。例如,它在早上 6 点运行,结果有时不正确:五个日期中的一个(无论是第一个还是最后一个)可能会丢失。其他时候,还好。相同的代码,仅在几个小时后运行。
我知道处理日期可能比乍一看要复杂得多,但这让我很困惑。我只能希望这是我对 DateTime 对象缺乏经验造成的。
$start = new \DateTime(date("Y-m-d", strtotime("-1 day")));
$end = new \DateTime(date("Y-m-d", strtotime("-5 days")));
$diff = $end->diff($start);
$interval = \DateInterval::createFromDateString('-1 day');
$period = new \DatePeriod($start, $interval, $diff->days);
foreach($period as $date) {
echo $date->format("Y-m-d"); // Sometimes first or last date will be missing
}
例如,如果代码在2020-07-05 00:00:00和 之间运行2020-07-05 23:59:59,它应该返回最后五个日期:
2020-07-04
2020-07-03
2020-07-02
2020-07-01
2020-06-30
我已经手动运行具有不同日期/时间的代码,并且无法重新创建该错误......但它在生产中每隔几天就会发生一次。
这只是普通的 PHP,但它作为 Laravel 项目的一部分运行,应该考虑到这一点。(应用程序时区设置为“欧洲/伦敦”。)
蛊毒传说
翻阅古今