W3docs

Jüdisches Datum in julianisches Datum in PHP umwandeln

Erfahren Sie, wie Sie mit der PHP-Funktion jewishtojd() jüdische Daten in julianische Tageszählungen umrechnen.

Die PHP-Funktion jewishtojd() wandelt ein Datum im jüdischen (hebräischen) Kalender in eine julianische Tageszählung (Julian Day Count) um – eine einzelne ganze Zahl, die einen Tag eindeutig identifiziert. Da julianische Tageszählungen kalenderneutral sind, fungieren sie als gemeinsamer „Dreh­punkt" für Konvertierungen zwischen Kalender­systemen: Ein jüdisches Datum wird in einen julianischen Tag umgewandelt, der dann in ein gregorianisches Datum (oder jedes andere unterstützte Kalender­system) weiter­konvertiert werden kann. Diese Seite erklärt, wie die Funktion funktioniert, welche Parameter und Sonderfälle es gibt, und zeigt geprüfte, ausführbare Beispiele.

Die Kalender­funktionen erfordern die PHP-Erweiterung calendar. Sie wird mit den meisten Builds ausgeliefert und ist unter Windows standardmäßig aktiviert. Unter Linux müssen Sie PHP möglicherweise mit --with-calendar kompilieren oder ein Paket wie php-calendar installieren.

Was ist eine julianische Tageszählung?

Eine julianische Tageszählung (JDN) ist die Anzahl der Tage, die seit dem Mittag (UTC) des 1. Januar 4713 v. Chr. im proleptischen julianischen Kalender vergangen sind. Verwechseln Sie sie nicht mit dem Julianischen Kalender – trotz des gemeinsamen Namens ist die julianische Tageszählung lediglich ein fortlaufender Tageszähler ohne Monate oder Jahre.

Der JDN ist das Brückenformat für PHPs Kalender-Erweiterung. Jede *tojd()-Funktion (jewishtojd(), gregoriantojd(), juliantojd(), frenchtojd()) erzeugt einen JDN, und jede jdto*()-Funktion verarbeitet einen. Alle kalenderübergreifenden Konvertierungen laufen daher über ihn:

Jewish date ──jewishtojd()──▶ JDN ──jdtogregorian()──▶ Gregorian date

Funktionssignatur

jewishtojd(int $month, int $day, int $year): int
ParameterBeschreibung
$monthJüdische Monatsnummer, wobei 1 = Tischri (nicht Januar, siehe den Hinweis unten). Gültiger Bereich: 1–13.
$dayTag des Monats, 1–30.
$yearJüdisches Jahr, gezählt ab dem traditionellen Schöpfungsdatum (Jahr 1 ≈ 3761 v. Chr.).

Die Funktion gibt die julianische Tageszählung als ganze Zahl zurück oder 0 für ein Datum außerhalb des unterstützten Bereichs (Jahre ca. 1 bis 9999).

Fallstrick: Monatsnummerierung beginnt bei Tischri

Dies ist der mit Abstand häufigste Fehler bei jewishtojd(). Das jüdische religiöse Jahr beginnt im Frühling (Nisan), aber PHP nummeriert die Monate ab Tischri (dem bürgerlichen Neujahr, Rosch ha-Schana). Damit gilt:

#Monat (kein Schaltjahr)
1Tishri
2Heshvan
3Kislev
4Tevet
5Shevat
6Adar
7Adar (identisch mit 6 im Nicht-Schaltjahr)
8Nisan
9Iyyar
10Sivan
11Tammuz
12Av
13Elul

In einem Schaltjahr wird ein zusätzlicher Monat eingefügt: Monat 6 wird zu Adar I und Monat 7 zu Adar II. Die Übergabe von 6 bedeutet nicht Juni oder Sivan – Sivan ist Monat 10.

Einfaches Beispiel

Dieses Beispiel wandelt den 6. Siwan 5783 (das Fest Schawuot, also den 10. Monat, Tag 6) in seine julianische Tageszählung um und dann zurück in ein gregorianisches Datum zur Überprüfung:

Jüdisches Datum in eine julianische Tageszählung umwandeln

<?php

$jewishMonth = 10; // Sivan
$jewishDay   = 6;
$jewishYear  = 5783;

$jdn = jewishtojd($jewishMonth, $jewishDay, $jewishYear);

echo "Julian Day Count: " . $jdn . "\n";
echo "Gregorian date:   " . jdtogregorian($jdn) . "\n";

Ausgabe:

Julian Day Count: 2460091
Gregorian date:   5/26/2023

Der 6. Siwan 5783 entspricht also dem 26. Mai 2023 im gregorianischen Kalender.

Jüdisches Datum in gregorianisches Datum umwandeln

Die Kombination von jewishtojd() mit jdtogregorian() ist der typische Anwendungsfall in der Praxis – zum Beispiel, um das gregorianische Datum von Rosch ha-Schana (1. Tischri) zu ermitteln:

<?php

function jewishToGregorian(int $month, int $day, int $year): string
{
    $jdn = jewishtojd($month, $day, $year);

    if ($jdn === 0) {
        return "Invalid Jewish date";
    }

    return jdtogregorian($jdn);
}

echo jewishToGregorian(1, 1, 5784) . "\n"; // Rosh Hashanah 5784

Ausgabe:

9/16/2023

Hin- und Zurückkonvertieren mit jdtojewish()

Die Umkehrfunktion von jewishtojd() ist jdtojewish(), die einen julianischen Tag wieder in eine jüdische Monat/Tag/Jahr-Datumszeichenkette umwandelt. Das Hin- und Zurückkonvertieren ist eine gute Methode, um die korrekte Monatsnummerierung zu überprüfen:

<?php

$jdn = jewishtojd(10, 6, 5783); // 6 Sivan 5783
echo "JDN:    " . $jdn . "\n";
echo "Jewish: " . jdtojewish($jdn) . "\n"; // month/day/year

Ausgabe:

JDN:    2460091
Jewish: 10/6/5783

Ungültige Eingaben behandeln

Für ein Datum, das PHP nicht darstellen kann, gibt jewishtojd() 0 zurück, anstatt einen Fehler auszulösen. Prüfen Sie daher immer auf diesen Fall, bevor Sie das Ergebnis an eine andere Funktion übergeben:

<?php

$jdn = jewishtojd(0, 5, 5783); // month 0 is invalid

var_dump($jdn);                // int(0)
echo $jdn === 0 ? "Out of range\n" : jdtogregorian($jdn) . "\n";

Ausgabe:

int(0)
Out of range

Wann würde ich das verwenden?

  • Anzeige hebräischer/Feiertags­daten aus einer Datenbank im gregorianischen Kalender des Benutzers.
  • Berechnung der Anzahl von Tagen zwischen zwei Daten aus verschiedenen Kalender­systemen (Subtraktion der JDNs).
  • Bestimmung des Wochentags für ein jüdisches Datum durch Übergabe des JDN an jddayofweek().

Fazit

jewishtojd() wandelt ein jüdisches (hebräisches) Kalenderdatum in eine julianische Tageszählung um – die kalenderneutrale ganze Zahl, die PHPs Kalender-Erweiterung als Dreh­punkt für alle kalenderübergreifenden Konvertierungen verwendet. Die zwei wichtigsten Punkte sind: Die Monatsnummerierung beginnt bei Tischri (1), nicht bei Nisan, und die Funktion gibt 0 für Daten außerhalb des gültigen Bereichs zurück. Kombinieren Sie sie mit jdtogregorian(), jdtojewish() oder jddayofweek(), um vollständige Datum­workflows zu erstellen.

Übungen

Übung
Was ist die Funktion von jewishtojd() in PHP?
Was ist die Funktion von jewishtojd() in PHP?
Was this page helpful?