使用DateTime :: modify()更改时间

时间:2015-07-22 09:47:59

标签: php datetime

我想更改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"

我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:0)

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

Tested 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"

release notes for PHP 5.3.6DateTime扩展名中提到了几项修正。这个似乎针对所描述的错误:

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