繁体   English   中英

如果 2 月 1 日是星期一,PHP strtotime()“二月第一个星期一”返回第二个星期一

[英]PHP strtotime() "first monday february" returns second monday if february 1st is a monday

我正在研究一个计算假期的 PHP 函数:

function holidays($country = 1, $timespan_start = 0, $timespan_end = 0)

假期作为数组中的时间戳返回。

由于我必须计算像二月的第一个星期一这样的日期,我尝试了strtotime("first monday february $year")并且我发现这不适用于 2010 年,因为 02/01/2010 是星期一 - 我得到2 月 8 日。

这个错误实际上是在更改日志中提到的:在 PHP 5 5.2.7 之前,请求一个给定的工作日发生在一个月的第一天,而该工作日是该月的第一天会错误地将一周添加到返回的时间戳中。 这已在 5.2.7 及更高版本中得到纠正。

但我使用的是 PHP 5.3.8。 为什么我会遇到这个错误?

看起来您只是缺少一个“of”:

echo date('Y-m-d', strtotime('first monday of february 2010'));

将给出预期的结果 请参阅有关各种输入格式的相对日期PHP 手册

根据您的 PHP 版本,'of' 语句可能有效,也可能无效。 作为另一种解决方案,请尝试:

echo date('Ym-d',strtotime('monday February 2010'));

将在 2010 年 2 月的第一个星期一返回。也适用于所有日期。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM