php strtotime “last Monday” 如果今天是星期一?

2022-08-30 11:33:56

我想使用 .strtotime("last Monday")

问题是,如果今天是星期一,它会返回什么?它似乎正在返回上周一的日期。在这种情况下,如何使其返回今天的日期?


答案 1

如果您阅读了该手册,就会发现一个很好的例子,它准确地描述了您要做什么 http://www.php.net/manual/en/datetime.formats.relative.php

strtotime('Monday this week');

更新:在较新版本的PHP中似乎引入了一个错误,即在星期日运行时返回错误的一周。你可以在这里对这个错误进行投票:https://bugs.php.net/bug.php?id=63740this week

更新 2:自 2016 年 5 月 18 日起,此问题已在 PHP 5.6.22、PHP 7.0.7 和 PHP 7.1-dev 中得到修复(希望在后续版本中保持不变),如下所示:https://bugs.php.net/bug.php?id=63740#1463570467


答案 2

在这种情况下,如何使其返回今天的日期?

伪代码:

if (today == monday)
    return today;
else
    return strtotime(...);

顺便说一句,这个技巧也可以工作:

strtotime('last monday', strtotime('tomorrow'));

推荐