Start · Sprachen · PHP · Referenz · cal_days_in_month

cal_days_in_month

Funktion

Gibt die Anzahl der Tage eines bestimmten Monats in einem bestimmten Jahr für einen angegebenen Kalendertyp zurück.

seit PHP 4.1.0 Kategorie: date

Signatur

cal_days_in_month(int $calendar, int $month, int $year): int

Beschreibung

cal_days_in_month() berechnet die Anzahl der Tage in einem angegebenen Monat und Jahr für einen bestimmten Kalender (z. B. Gregorianisch, Julianisch, Jüdisch oder Islamisch). Die Funktion gehört zur Calendar-Erweiterung von PHP und berücksichtigt dabei korrekt Schaltjahre sowie kalenderspezifische Besonderheiten.

Typischstes Anwendungsgebiet ist die Ermittlung der Monatslänge im gregorianischen Kalender (CAL_GREGORIAN), z. B. für Datumsberechnungen, Kalenderanzeigen oder Validierungen von Benutzereingaben. Im Gegensatz zu alternativen Ansätzen mit date() und mktime() ist die Verwendung dieser Funktion besonders lesbar und direkt.

Für den gregorianischen Kalender unterstützt die Funktion Jahre im Bereich von 1 bis 9999. Bei anderen Kalendertypen wie CAL_JEWISH oder CAL_ISLAMIC ist die Funktion nützlich, wenn internationale oder religiöse Datumsberechnungen durchgeführt werden müssen.

Parameter

Name Typ Default Beschreibung
$calendar Pflicht int Die Kalender-Konstante, die den zu verwendenden Kalendertyp angibt. Mögliche Werte: CAL_GREGORIAN, CAL_JULIAN, CAL_JEWISH oder CAL_ISLAMIC.
$month Pflicht int Die Monatsnummer (1–12 für gregorianische und julianische Kalender; andere Kalender können abweichende Bereiche haben).
$year Pflicht int Das Jahr als Ganzzahl. Für den gregorianischen Kalender gültige Werte: 1–9999.

Rückgabewert

Typ
int
Beschreibung
Gibt die Anzahl der Tage im angegebenen Monat und Jahr für den gewählten Kalender als ganze Zahl zurück.

Beispiele

Tage im Februar – Schaltjahr vs. Normaljahr

<?php
// Februar 2024 ist ein Schaltjahr
$tage2024 = cal_days_in_month(CAL_GREGORIAN, 2, 2024);
echo "Februar 2024: $tage2024 Tage\n"; // 29

// Februar 2023 ist kein Schaltjahr
$tage2023 = cal_days_in_month(CAL_GREGORIAN, 2, 2023);
echo "Februar 2023: $tage2023 Tage\n"; // 28
Februar 2024: 29 Tage Februar 2023: 28 Tage

Alle Monatslängen eines Jahres ausgeben

<?php
$jahr = 2024;
for ($monat = 1; $monat <= 12; $monat++) {
    $tage = cal_days_in_month(CAL_GREGORIAN, $monat, $jahr);
    echo date('F', mktime(0, 0, 0, $monat, 1, $jahr)) . ": $tage Tage\n";
}
January: 31 Tage February: 29 Tage March: 31 Tage April: 30 Tage May: 31 Tage June: 30 Tage July: 31 Tage August: 31 Tage September: 30 Tage October: 31 Tage November: 30 Tage December: 31 Tage

Verwendung mit dem jüdischen Kalender

<?php
// Monat 7 (Tishri) im jüdischen Jahr 5784
$tage = cal_days_in_month(CAL_JEWISH, 7, 5784);
echo "Tishri 5784: $tage Tage\n";
Tishri 5784: 30 Tage

// Wichtig · Fallstricke

Erweiterungsabhängigkeit: cal_days_in_month() erfordert die PHP-Erweiterung calendar, die in den meisten Standard-PHP-Installationen aktiviert ist. Sollte sie fehlen, muss die Erweiterung in der php.ini aktiviert oder kompiliert werden.

Alternative ohne Erweiterung: Falls die Calendar-Erweiterung nicht verfügbar ist, kann die Anzahl der Tage alternativ über date('t', mktime(0, 0, 0, $monat, 1, $jahr)) ermittelt werden – allerdings nur für den gregorianischen Kalender.

Jahresbereich: Für CAL_GREGORIAN sind nur Jahre zwischen 1 und 9999 gültig. Werte außerhalb dieses Bereichs können zu unerwarteten Ergebnissen führen.