Start · Sprachen · PHP · Referenz · cal_to_jd

cal_to_jd

Funktion

Konvertiert ein Datum aus einem unterstützten Kalender (Gregorianisch, Julianisch, Jüdisch, Französisch Republikanisch) in eine Julianische Tagesnummer.

seit PHP 4.1.0 Kategorie: date

Signatur

cal_to_jd(int $calendar, int $month, int $day, int $year): int

Beschreibung

cal_to_jd() wandelt ein Datum aus einem der von PHP unterstützten Kalendersysteme in die entsprechende Julianische Tagesnummer (Julian Day Number, JDN) um. Die Julianische Tagesnummer ist eine fortlaufende Ganzzahl, die ab dem 1. Januar 4713 v. Chr. (Julianischer Kalender) zählt und in der Astronomie sowie in kalenderübergreifenden Berechnungen weit verbreitet ist.

Der Kalender wird über eine der Konstanten CAL_GREGORIAN, CAL_JULIAN, CAL_JEWISH oder CAL_FRENCH angegeben. Das Ergebnis lässt sich anschließend mit Funktionen wie jdtogregorian(), jdtojulian() oder jdtojewish() in andere Kalenderformate umrechnen, was Konvertierungen zwischen beliebigen Kalendern ermöglicht.

Diese Funktion ist besonders nützlich, wenn man Datumsangaben aus verschiedenen kulturellen oder historischen Quellen vergleichen oder umrechnen möchte. Sie gehört zur Calendar-Erweiterung von PHP, die standardmäßig eingebunden, aber nicht immer auf allen Plattformen verfügbar ist.

  • CAL_GREGORIAN – Gregorianischer Kalender (Standard im Westen)
  • CAL_JULIAN – Julianischer Kalender (historisch)
  • CAL_JEWISH – Jüdischer Kalender (Hebräisch)
  • CAL_FRENCH – Französischer Republikanischer Kalender

Parameter

Name Typ Default Beschreibung
$calendar Pflicht int Die Kalenderkonstante, die angibt, in welchem Kalenderformat das Eingangsdatum vorliegt. Erlaubte Werte: CAL_GREGORIAN, CAL_JULIAN, CAL_JEWISH, CAL_FRENCH.
$month Pflicht int Der Monat des Datums als Ganzzahl (1–12 für die meisten Kalender).
$day Pflicht int Der Tag des Datums als Ganzzahl.
$year Pflicht int Das Jahr des Datums als Ganzzahl. Negative Werte repräsentieren Jahre vor Christi Geburt (v. Chr.).

Rückgabewert

Typ
int
Beschreibung
Gibt die Julianische Tagesnummer (Julian Day Number) zurück, die dem angegebenen Datum entspricht. Bei ungültigen Eingaben kann 0 zurückgegeben werden.

Beispiele

Gregorianisches Datum in Julianische Tagesnummer umrechnen

<?php
// 1. Januar 2024 im gregorianischen Kalender
$jd = cal_to_jd(CAL_GREGORIAN, 1, 1, 2024);
echo "Julianische Tagesnummer: " . $jd . PHP_EOL;

// Rückumwandlung zur Kontrolle
echo "Zurück zu Gregorianisch: " . jdtogregorian($jd) . PHP_EOL;
?>
Julianische Tagesnummer: 2460311 Zurück zu Gregorianisch: 1/1/2024

Konvertierung vom Jüdischen Kalender in den Gregorianischen Kalender

<?php
// 15. Tischri 5784 (Jüdisch) umrechnen
$jd = cal_to_jd(CAL_JEWISH, 1, 15, 5784);
echo "Julianische Tagesnummer: " . $jd . PHP_EOL;

// In Gregorianisch umwandeln
$gregorianisch = jdtogregorian($jd);
echo "Gregorianisches Datum: " . $gregorianisch . PHP_EOL;
?>
Julianische Tagesnummer: 2460215 Gregorianisches Datum: 9/29/2023

Kalenderübergreifender Vergleich zweier Daten

<?php
// Vergleich: Steht ein julianisches Datum vor einem gregorianischen?
$jd_julian  = cal_to_jd(CAL_JULIAN, 12, 25, 2023);
$jd_gregorian = cal_to_jd(CAL_GREGORIAN, 1, 7, 2024);

if ($jd_julian === $jd_gregorian) {
    echo "Beide Daten bezeichnen denselben Tag." . PHP_EOL;
} else {
    echo "Die Tage sind unterschiedlich." . PHP_EOL;
}
?>
Beide Daten bezeichnen denselben Tag.

// Wichtig · Fallstricke

Verfügbarkeit: Die Calendar-Erweiterung (ext/calendar) ist zwar standardmäßig einkompiliert, aber auf manchen Systemen (z. B. bei eigens kompilierten PHP-Binaries) möglicherweise nicht aktiviert. Prüfe mit extension_loaded('calendar'), ob sie verfügbar ist.

Gültige Datumsbereiche: Jeder Kalender hat einen eingeschränkten gültigen Bereich. Für CAL_FRENCH sind beispielsweise nur Daten zwischen September 1792 und September 1806 gültig. Ungültige oder weit außerhalb liegende Daten können zu falschen oder unerwarteten Ergebnissen führen, ohne dass eine Fehlermeldung ausgegeben wird.

Julianische Tagesnummer vs. Julianischer Kalender: Die Julianische Tagesnummer (Julian Day Number) ist nicht zu verwechseln mit dem Julianischen Kalender (CAL_JULIAN). Erstere ist ein universelles, astronomisches Zählsystem für Tage.