7

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

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

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

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

4

2 回答 2

26

您必须为此创建一个新的 DateTime 实例,否则您将编辑对开始日期 DateTime 对象的原始引用。尝试这样的事情:

$endTime = clone $startTime;
$endTime->add(new DateInterval('PT75M'));
于 2012-12-08T19:41:31.730 回答
0

如果可以更改getStartTime()方法的返回类型,我强烈建议将其从 更改\DateTime\DateTimeImmutable.

然后代码将如下所示:

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

这篇 Nikola Poša 的博客文章很好地描述了这种方法的更多示例和优点。

于 2020-06-02T21:14:41.643 回答