PHP 中如何相加两个日期区间
相加两个日期区间以计算出总的时分时长是一个困扰许多 PHP 程序员的问题。让我们尝试了解如何实现这一操作。
问题描述
用户希望以以下方式相加两个日期区间,得到时分格式的总时长:
<code class="php">$a = new DateTime('14:25'); $b = new DateTime('17:30'); $interval1 = $a->diff($b); echo "interval 1 : " . $interval1->format("%H:%I"); echo "<br />"; $c = new DateTime('08:00'); $d = new DateTime('13:00'); $interval2 = $c->diff($d); echo "interval 2 : " . $interval2->format("%H:%I"); echo "<br />"; echo "Total interval : " . ($interval1 + $interval2);</code>
问题解答
PHP 没有运算符重载,因此用对象进行加法运算时,PHP 会先尝试将其转换为字符串,但 DateInterval 不支持此操作。
为了解决此问题,我们需要使用另一种方法:
代码示例
以下是使用上述方法的代码示例:
<code class="php">$a = new DateTime('14:25'); $b = new DateTime('17:30'); $interval1 = $a->diff($b); echo "interval 1: " . $interval1->format("%H:%I") . "\n"; $c = new DateTime('08:00'); $d = new DateTime('13:00'); $interval2 = $c->diff($d); echo "interval 2: " . $interval2->format("%H:%I") . "\n"; $e = new DateTime('00:00'); $f = clone $e; $e->add($interval1); $e->add($interval2); echo "Total interval : " . $f->diff($e)->format("%H:%I") . "\n";</code>
输出:
interval 1: 03:05 interval 2: 05:00 Total interval : 08:05
替代方法(自定义 DateInterval)
如果你想深入了解,还可以考虑创建自己的 DateInterval 扩展,并重新定义加法运算。这是一个更高级的方法,需要对 PHP 扩展开发有深入的了解。
以上是如何在 PHP 中添加两个日期间隔来查找总持续时间?的详细内容。更多信息请关注PHP中文网其他相关文章!