strtotime认为"下个月的第一个星期天" =周三?

时间:2014-10-07 11:28:56

标签: php strtotime

strtotime有点神奇。虽然我知道它不能做任何,但我总是在寻找正确的解决方案之前猜测。

所以我想得到下个月的第一个星期日和星期一。我试过这个:

strtotime("first Sunday next month")
strtotime("first Monday next month")
格式化后{p> %d/%m/%y),结果为:

12/11/2014
13/11/2014

这是星期三和星期四。是什么赋予了?我预计它不起作用或者给我错误的星期天,但星期三在那里做什么?

更新

我不需要帮助弄清楚如何到达下周日。我知道如何进行正确的计算(我知道如何查找正确的方法)。我上面的猜测只是在乱搜寻捷径。 我想知道,但是为什么我得到这个特殊的奇怪结果,这似乎与我写的所有内容完全无关

2 个答案:

答案 0 :(得分:3)

试试这个:

echo date('r', strtotime("first Sunday of next month")) . PHP_EOL;
echo date('r', strtotime("first Monday of next month")) . PHP_EOL;

这非常棘手,但您需要确保您的格式在手册的Relative Formats部分中有详细说明。在这种情况下,您需要序数空间日期名称空间' 。否则,它可能只是按顺序进行两次不同的计算。

在这种情况下,由于整个表达式没有已知的格式,因此它会被分割:

  1. 转到下周日:2014年10月12日,星期日
  2. 下个月:2014年11月12日星期三
  3. 测试代码:

    echo date('r', strtotime("first Sunday next month")) . PHP_EOL;
    echo date('r', strtotime("first Monday next month")) . PHP_EOL;
    
    echo PHP_EOL;
    
    echo date('r', strtotime("first Sunday")) . PHP_EOL;
    echo date('r', strtotime("first Monday")) . PHP_EOL;
    echo date('r', strtotime("next month")) . PHP_EOL;
    

    免责声明:我自己几乎从未做过正确的事。

答案 1 :(得分:2)

尝试

// strtotime("first Sunday", strtotime("next month")); // wrong
echo date("%d/%m/%y", strtotime("first sunday of next month"));

但输出invalid results for PHP 4.3 - 5.2.17