PHP 不支持运算符重载。使用加法运算符 ( ) 时,对象首先转换为字符串。但是,DateInterval 不支持字符串转换。
<code class="php">interval 1: 03:05 interval 2: 05:00 Total interval : 08:05</code>
而是创建一个新的 DateTime 对象,使用 add() 函数添加间隔,并计算与参考点的差值:
<code class="php">$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>
考虑到DateInterval的内部存储结构,扩展它并手动执行计算也是可以的:
<code class="php">class MyDateInterval extends DateInterval { public static function fromDateInterval(DateInterval $from) { return new MyDateInterval($from->format('P%yY%dDT%hH%iM%sS')); } public function add(DateInterval $interval) { foreach (str_split('ymdhis') as $prop) { $this->$prop += $interval->$prop; } } } $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 = MyDateInterval::fromDateInterval($interval1); $e->add($interval2); echo "Total interval: " . $e->format("%H:%I") . "\n";</code>
注意: PHP 扩展可以实现 DateInterval 扩展。
以上是如何在 PHP 中添加两个日期间隔?的详细内容。更多信息请关注PHP中文网其他相关文章!