我正在尝试使用new\DateTime(“下周星期三”)
获取下周的星期三日期。但是,它返回的是星期一的2016-12-19 00:00:00.000000
。为什么会这样?如何得到正确的结果?
我试图在PHP沙箱中在线复制它,但它返回了正确的结果http://sandbox.onlinephpfunctions.com/code/7ab99fcfeffedc1ad01d7de9ed236ac273fe1bb3这可能取决于我的环境吗?
PHP7.0。11(cli)(创建日期:2016年10月2日00:32:59)(NTS)版权所有(c)1997-2016 PHP Group Zend Engine v3。0.0,版权所有(c)1998-2016 Zend Technologies与Xdebug v2。4.0,版权所有(c)2002-2016,作者:德里克·雷特汉斯
这似乎是一个错误(可能这个只发生在周日):
<?php
var_dump(new \DateTime('Wednesday next week'));
PHP版本5.6。23至5.6。29和7.0。8至7.1。0输出12月19日(星期一),而PHP版本为5.0至5.6。22和7.0。0到7.0。7返回12月28日(星期三)。
我在PHP 5.6.23或7.0.8的更改日志条目中没有看到任何相关更改。
我在这里得到了同样的结果,实际上似乎是一个“下周”的事情:
$date = new \DateTime('next week wednesday');
print_r($date);
DateTime Object
(
[date] => 2016-12-19 00:00:00.000000
[timezone_type] => 3
[timezone] => Europe/Berlin
)
重写似乎工作,取决于你想要什么:
$date = new \DateTime('wednesday');
print_r($date);
DateTime Object
(
[date] => 2016-12-21 00:00:00.000000
[timezone_type] => 3
[timezone] => Europe/Berlin
)
或者
$date = new \DateTime('wednesday');
$date->add(new \DateInterval('P1W'));
print_r($date);
DateTime Object
(
[date] => 2016-12-28 00:00:00.000000
[timezone_type] => 3
[timezone] => Europe/Berlin
)