strtotime()与第一个和最后一个奇怪

时间:2010-07-06 17:40:42

标签: php strtotime

$day = date('l', strtotime('07/25/2010'));
echo "$day ";
echo date("m/d/Y", strtotime("first $day"));

打印出Sunday 07/11/2010

$day = date('l', strtotime('07/25/2010'));
echo "$day ";
echo date("m/d/Y", strtotime("last $day"));

打印出Sunday 07/04/2010

这里发生了什么?不应该分别是07/04/2010和07/25/2010吗?

2 个答案:

答案 0 :(得分:1)

我可以对last说些什么,请阅读Datetime - Relative Formats

  

“'last'dayname”从当天开始最后一天的日期名称。 (例如:“2008年7月上旬”是指“2008-06-25”;“2008年7月”首先将当前日期设置为“2008-07-01”,然后“上次结婚”移至上一个周三,即“2008年7月” -06-25" )。

我猜它与first类似,它会为您提供下一个dayname

答案 1 :(得分:1)

我认为答案是正确的,因为它们是相对于给定的日期(当没有给出今天的默认值时)。

基于PHP文档:

  

该函数期望给出一个   包含美国英语日期的字符串   格式并将尝试解析   格式化为Unix时间戳(   自1970年1月1日以来的秒数   00:00:00 UTC),相对于   现在给出的时间戳,或者当前的时间戳   时间,如果现在没有提供。

所以FIRST SUNDAY实际上是第11个,而最后一个星期日实际上是第4个。根据您问题的措辞,您似乎正在寻找该月的第一个星期日和该月的最后一个星期日。此函数返回今天的第一个星期日,以及今天之前的最后一个星期天。