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에서 두 개의 날짜 간격을 추가하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!