将分钟添加到PHP Datetime以计算事件的开始/结束

时间:2012-12-08 19:36:10

标签: php dateinterval

我想用PHP计算一个事件的开始和结束日期时间。我得到了这个事件的开始和添加的持续时间以结束。所以我尝试了以下代码:

$startTime = $this->getStartTime();
$endTime = $this->getStartTime();

$endTime->add(new DateInterval('PT75M'));

在这个示例中,我将75分钟添加到开始时间,然后计算事件的结束。它有效,但它也编辑了开始时间。我在PHP文档中读到ADD方法编辑了被调用的对象,但我不明白它如何编辑startEdit变量。我没有在我在示例中编写的任何方法中使用引用,也没有在getStartTime函数

中使用引用

2 个答案:

答案 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的更多示例和优点。