使用DateTime::modify()来修改一天中的时间



我想在PHP DateTime对象中更改一天的时间:

$date = new DateTime('2015-07-20 0:00');
var_dump($date->format(DateTime::ISO8601));
$date->modify('18:30:00');
var_dump($date->format(DateTime::ISO8601));

预期输出

string(24) "2015-07-20T00:00:00+0200"
string(24) "2015-07-20T18:30:00+0200"
实际输出

string(24) "2015-07-20T00:00:00+0200"
string(24) "2015-07-20T00:00:00+0200"

我怎样才能做到这一点?

实际上,代码在当前PHP版本中按预期工作。你似乎运行一个非常过时(和不安全)的版本<= 5.3.5。请更新!

test with 3v4l.org:

5.3.6 - 7.0.0beta1, hhvm-3.6.1 - 3.8.0的输出

string(24) "2015-07-20T00:00:00+0200"
string(24) "2015-07-20T18:30:00+0200"

5.2.0 - 5.3.5, hhvm-3.3.1

string(24) "2015-07-20T00:00:00+0200"
string(24) "2015-07-20T00:00:00+0200"

PHP 5.3.6的发布说明提到了DateTime扩展中的几个修复。这个似乎是针对所描述的bug:

    修正了DateTime->modify()中绝对日期/时间语句无效的错误。(德里克)

最新更新