我想用PHP计算一个事件的开始和结束日期时间。我得到了这个事件的开始和添加的持续时间以结束。所以我尝试了以下代码:
$startTime = $this->getStartTime();
$endTime = $this->getStartTime();
$endTime->add(new DateInterval('PT75M'));
在这个示例中,我将75分钟添加到开始时间,然后计算事件的结束。它有效,但它也编辑了开始时间。我在PHP文档中读到ADD方法编辑了被调用的对象,但我不明白它如何编辑startEdit变量。我没有在我在示例中编写的任何方法中使用引用,也没有在getStartTime函数
中使用引用答案 0 :(得分:18)
您必须为此创建一个新的DateTime实例,否则您将编辑对开始日期DateTime对象的原始引用。尝试这样的事情:
$endTime = clone $startTime;
$endTime->add(new DateInterval('PT75M'));
答案 1 :(得分:0)
如果可以更改getStartTime()
方法的返回类型,我强烈建议将其从\DateTime
更改为\DateTimeImmutable
。
然后代码将如下所示:
$endTime = $startTime->add(new DateInterval('PT75M'));
此方法are described pretty well in this Nikola Poša's blog article的更多示例和优点。