Signatur
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
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
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";
}
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";
// 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.