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 „Drehpunkt" für Konvertierungen zwischen Kalendersystemen: Ein jüdisches Datum wird in einen julianischen Tag umgewandelt, der dann in ein gregorianisches Datum (oder jedes andere unterstützte Kalendersystem) weiterkonvertiert 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 Kalenderfunktionen 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-calendarkompilieren oder ein Paket wiephp-calendarinstallieren.
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 dateFunktionssignatur
jewishtojd(int $month, int $day, int $year): int| Parameter | Beschreibung |
|---|---|
$month | Jüdische Monatsnummer, wobei 1 = Tischri (nicht Januar, siehe den Hinweis unten). Gültiger Bereich: 1–13. |
$day | Tag des Monats, 1–30. |
$year | Jü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) |
|---|---|
| 1 | Tishri |
| 2 | Heshvan |
| 3 | Kislev |
| 4 | Tevet |
| 5 | Shevat |
| 6 | Adar |
| 7 | Adar (identisch mit 6 im Nicht-Schaltjahr) |
| 8 | Nisan |
| 9 | Iyyar |
| 10 | Sivan |
| 11 | Tammuz |
| 12 | Av |
| 13 | Elul |
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/2023Der 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 5784Ausgabe:
9/16/2023Hin- 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/yearAusgabe:
JDN: 2460091
Jewish: 10/6/5783Ungü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 rangeWann würde ich das verwenden?
- Anzeige hebräischer/Feiertagsdaten aus einer Datenbank im gregorianischen Kalender des Benutzers.
- Berechnung der Anzahl von Tagen zwischen zwei Daten aus verschiedenen Kalendersystemen (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 Drehpunkt 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 Datumworkflows zu erstellen.