ホームページ >バックエンド開発 >PHPチュートリアル >PHP で 2 つの日付間隔を追加するには?

PHP で 2 つの日付間隔を追加するには?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-03 06:02:301030ブラウズ

How to Add Two Date Intervals in PHP?

PHP で 2 つの日付間隔を追加する方法

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。