我正在尝试使用new \DateTime('next week wednesday')
获取下周的星期三日期。但是,它返回2016-12-19 00:00:00.000000
,即星期一。为什么会这样?如何获得正确的结果?
我试图在网上的PHP沙箱中重现它,但它会返回正确的结果http://sandbox.onlinephpfunctions.com/code/7ab99fcfeffedc1ad01d7de9ed236ac273fe1bb3这可能取决于我的环境吗?
我在OSX上运行PHP 7
PHP 7.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,Derick Rethans
答案 0 :(得分:5)
此appears to be a bug(可能this one仅在星期日发生):
<?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的更改日志条目中看到任何相关更改。
答案 1 :(得分:0)
我在这里得到的结果相同,下周确实似乎是一个&#39;啄:
$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
)