0Pricing
PHP Academy · Lektion

Datumsberechnungen mit DateInterval

Addieren und subtrahieren Sie Zeiträume mit DateInterval und modify().

Datumsberechnungen mit DateInterval ist eine kostenlose PHP Academy-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des PHP Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der PHP Academy-Kurs umfasst insgesamt 4 Lektionen.

Überblick zu DateInterval

DateInterval steht für eine Zeitdauer – Tage, Monate, Stunden usw. In PHP ist dies der objektorientierte Ansatz, um Zeit zu DateTime-Objekten hinzuzufügen oder davon abzuziehen.

DateInterval erstellen

Erstellen Sie ein DateInterval mit der ISO-8601-Notation für Zeitdauern:

<?php
// P = period, T = time separator
$oneYear  = new DateInterval('P1Y');    // 1 year
$sixMonths = new DateInterval('P6M');   // 6 months
$tenDays  = new DateInterval('P10D');   // 10 days
$twoHours = new DateInterval('PT2H');   // 2 hours (T before time)
$complex  = new DateInterval('P1Y2M3DT4H5M6S');

echo $oneYear->y;    // 1
echo $tenDays->d;    // 10

add() und sub()

Fügen Sie ein DateInterval zu einem DateTime hinzu oder ziehen Sie es davon ab:

<?php
$dt = new DateTime('2024-01-01');

$dt->add(new DateInterval('P1Y'));   // +1 year
echo $dt->format('Y-m-d');  // 2025-01-01

$dt->sub(new DateInterval('P3M'));   // -3 months
echo $dt->format('Y-m-d');  // 2024-10-01

diff() zwischen zwei Datumsangaben

diff() gibt ein DateInterval zurück, das die Differenz zwischen zwei Datumsangaben darstellt:

<?php
$start = new DateTime('2024-01-01');
$end   = new DateTime('2024-06-15');

$diff = $start->diff($end);

echo $diff->y;  // years
echo $diff->m;  // months
echo $diff->d;  // days
echo $diff->h;  // hours
echo $diff->days; // total days: 166

Lesbare Zeitdifferenzen

Formatieren Sie ein DateInterval für die Anzeige:

<?php
$birthdate = new DateTime('1990-05-15');
$today     = new DateTime();
$age       = $birthdate->diff($today);

echo $age->y . ' years, ' . $age->m . ' months, ' . $age->d . ' days';

// Check if date is in the past
if ($diff->invert === 1) {
    echo 'Date was in the past';
}

DateInterval::createFromDateString()

Erstellen Sie ein DateInterval aus einer Zeichenkette in natürlicher Sprache:

<?php
$interval = DateInterval::createFromDateString('1 year 2 months 3 days');

$dt = new DateTime('2024-01-01');
$dt->add($interval);
echo $dt->format('Y-m-d');  // 2025-03-04

// Other examples:
DateInterval::createFromDateString('next monday');
DateInterval::createFromDateString('6 weeks');

DatePeriod – über Bereiche iterieren

Mit DatePeriod können Sie in regelmäßigen Abständen über einen Datumsbereich iterieren:

<?php
$start    = new DateTime('2024-01-01');
$interval = new DateInterval('P1M');  // monthly
$end      = new DateTime('2024-06-01');

$period = new DatePeriod($start, $interval, $end);

foreach ($period as $date) {
    echo $date->format('Y-m') . PHP_EOL;
}
// 2024-01, 2024-02, 2024-03, 2024-04, 2024-05

DatePeriod für wöchentliche Berichte verwenden

Generieren Sie wöchentliche Zeitpunkte:

<?php
$start    = new DateTime('2024-01-01');
$interval = new DateInterval('P7D');  // weekly
$end      = new DateTime('2024-02-01');

$weeks = new DatePeriod($start, $interval, $end);
foreach ($weeks as $week) {
    echo 'Week of: ' . $week->format('Y-m-d') . PHP_EOL;
}

Intervalle vergleichen

Vergleichen Sie die Größe zweier DateIntervals, indem Sie sie in die Gesamtzahl der Tage umwandeln:

<?php
$a = new DateTime('2024-01-01');
$b = new DateTime('2024-06-01');
$c = new DateTime('2025-01-01');

$diff1 = $a->diff($b)->days;  // 152
$diff2 = $a->diff($c)->days;  // 366

echo ($diff1 < $diff2) ? 'First interval shorter' : 'First interval longer';
// First interval shorter

Berechnung der Werktage

Berechnen Sie die Anzahl der Werktage zwischen zwei Datumsangaben:

<?php
function businessDays(DateTime $from, DateTime $to): int {
    $count = 0;
    $cur   = clone $from;
    while ($cur < $to) {
        $dow = (int) $cur->format('N'); // 1=Mon ... 7=Sun
        if ($dow < 6) $count++;
        $cur->modify('+1 day');
    }
    return $count;
}

$from = new DateTime('2024-05-27');
$to   = new DateTime('2024-06-07');
echo businessDays($from, $to) . ' business days';

Muster für Ablaufdaten

Gängiges Muster für das Ablaufdatum eines Abonnements oder Tokens mit DateInterval:

<?php
function expiresAt(string $duration = 'P30D'): string {
    $dt = new DateTimeImmutable();
    return $dt->add(new DateInterval($duration))->format('Y-m-d H:i:s');
}

echo expiresAt('P30D');   // 30-day trial expiry
echo expiresAt('P1Y');    // 1-year subscription expiry
echo expiresAt('PT1H');   // 1-hour token expiry

Schnelltest

Was gibt $dateA->diff($dateB)->days zurück?

Zusammenfassung: DateInterval

Wichtige Punkte:

  • new DateInterval('P1Y2M3DT4H') – Zeitdauer nach ISO 8601
  • add()/sub(), um DateTime zu ändern
  • diff() gibt das DateInterval zwischen zwei Datumsangaben zurück
  • DatePeriod iteriert über einen Datumsbereich
  • Verwenden Sie ->days für die Gesamtzahl der Tage aus diff()
  • Prüfen Sie ->invert, um festzustellen, ob das Intervall negativ ist

Häufig gestellte Fragen

Ist die Lektion „Datumsberechnungen mit DateInterval“ kostenlos?

Ja — der vollständige Text von „Datumsberechnungen mit DateInterval“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des PHP Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der PHP Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Datumsberechnungen mit DateInterval“?

Addieren und subtrahieren Sie Zeiträume mit DateInterval und modify(). Du übst PHP Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um PHP Academy zu starten?

Keine Vorkenntnisse erforderlich. PHP Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.

Wie lange dauert die Lektion „Datumsberechnungen mit DateInterval“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser PHP Academy-Lektion Code schreiben und ausführen?

Ja. Jede PHP Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Unix-Zeitstempel und date()
  2. Die DateTime-Klasse
  3. Datumsberechnungen mit DateInterval
  4. Zeitzonen in PHP
← Zurück zu PHP Academy