我有一个关于修改php DateTime对象的正确方法的问题。目前,我正在做类似的事情:
$origEvent = new DateTime(...);
$newEvent = new DateTime(...);
$someOtherEvent = new DateTime(...);
//get the time difference between the orignal event and the edited event
$diff = $origEvent->diff($newEvent);
$someOtherEvent->add($diff);
使用DateTime :: add()方法似乎无论我们是在$ someOtherEvent中添加还是减去时间。这是正确的方法吗?我知道有DateTime :: sub()用于减去时间,但似乎只要DateInterval(由$ origEvent-> diff()生成)具有反转标志,DateTime :: add()就知道了实际上减去时间。它是否正确?我应该使用像DateTime :: modify这样的东西吗?
答案 0 :(得分:0)
实际上,DateTime :: diff()以相对方式返回两个DateTime对象之间的差异。因此:
所以:
为了清晰起见,您可以将DateTime :: diff()的第二个参数设置为true,以便每次都获得绝对差值,然后选择DateTime :: add()和DateTime之间的最佳函数: :sub()知道你有绝对差异。
关于DateTime :: modify()和DateTime :: add(),DateTime:sub()之间的选择的一些说法: