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>
注: DateInterval 拡張機能は、PHP 拡張機能で使用できます。
以上がPHP で 2 つの日付間隔を追加するには?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。