PHP:使用DateTime::modify将两个DateTime对象之间的差异添加到另一个日期

5
我该怎么将两个DateTime对象之间的时间差加到另一个DateTime对象上?我尝试过类似下面的代码,但它并没有起作用。
$first_time=new DateTime('01/01/2000 00:00:00');
$second_time=new DateTime('01/01/2000 00:00:50');
$diff=$first_time->diff($second_time);
$time=new DateTime('01/01/2012 12:00:00');
$time->modify('+'.$diff->format('%s').' seconds');
echo $time;
//Should echo: "01/01/2012 12:00:50"

有人能帮我吗?


echo 的实际输出是什么? - Corubba
如果您使用的是PHP5.3或更高版本,则可以使用DateTime :: add,否则请使用DateTime :: modify。有关DateTime :: modify()的详细信息,请参见我的答案。 - Shiplu Mokaddim
1个回答

3

format() 方法不能计算时间间隔的绝对秒数,它只是给出内部属性的值。既然您想要添加,为什么不直接使用 add() 方法呢?diff() 方法返回一个 DateInterval 对象,这正是 add() 方法所需要的。

$first_time=new DateTime('01/01/2000 00:00:00');
$second_time=new DateTime('01/01/2000 00:00:50');
$diff=$first_time->diff($second_time);
$time=new DateTime('01/01/2012 12:00:00');
$time->add($diff);
echo $time;

DateTime::add()在PHP5.2中不可用。这就是为什么OP想要使用DateTime::modify()。请参见此处的注释:http://www.php.net/manual/en/datetime.add.php#refsect1-datetime.add-notes。 - Shiplu Mokaddim

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接