Nat*_*n H 35 php datetime strtotime
我想用strtotime("last Monday").
问题是,如果今天是星期一,那又回归了什么?它似乎正在返回上周一的星期日.在这种情况下,如何让它返回今天的日期?
jml*_*nik 121
如果您阅读本手册,有一个很好的例子可以准确描述您想要做什么http://www.php.net/manual/en/datetime.formats.relative.php
strtotime('Monday this week');
Run Code Online (Sandbox Code Playgroud)
更新:似乎在较新版本的PHP中引入了一个错误,this week在周日运行时返回错误的一周.您可以在此处对错误进行投票:https://bugs.php.net/bug.php?id = 63740
更新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
zer*_*kms 70
在这种情况下,如何让它返回今天的日期?
伪代码:
if (today == monday)
return today;
else
return strtotime(...);
Run Code Online (Sandbox Code Playgroud)
顺便说一下,这个技巧也可行:
strtotime('last monday', strtotime('tomorrow'));
Run Code Online (Sandbox Code Playgroud)
如果今天是星期一,则strtotime(“ last Monday”)将返回过去7天的日期。您为什么不只检查今天是否是星期一,如果是,请返回今天的日期,如果不是,请返回上周?
这将是一种万无一失的方法。
if (date('N', time()) == 1) return date('Y-m-d');
else return date('Y-m-d', strtotime('last Monday'));
Run Code Online (Sandbox Code Playgroud)
http://us2.php.net/manual/zh/function.date.php