Start · Sprachen · PHP · Referenz · cal_from_jd

cal_from_jd

Funktion

Konvertiert einen Julianischen Tageszähler (Julian Day Count) in ein Datum des angegebenen Kalenders und gibt ein Array mit Datumsinformationen zurück.

seit PHP 4.1.0 Kategorie: date

Signatur

cal_from_jd(int $julian_day, int $calendar): array

Beschreibung

cal_from_jd() wandelt einen Julianischen Tageszähler (JD) in ein Datum des gewünschten Kalendersystems um. Der Julianische Tageszähler ist ein fortlaufender Tageszähler, der in der Astronomie und Chronologie verwendet wird und unabhängig von einem bestimmten Kalendersystem ist. Mit dieser Funktion lässt er sich in ein konkretes Datum eines der unterstützten Kalender überführen.

Unterstützte Kalender werden über die Konstanten CAL_GREGORIAN, CAL_JULIAN, CAL_JEWISH und CAL_FRENCH angegeben. Das Ergebnis ist ein assoziatives Array mit Informationen wie Tag, Monat, Jahr, Wochentag und einer Datumszeichenkette.

Die Funktion ist besonders nützlich in Kombination mit anderen Kalender-Funktionen wie cal_to_jd() oder unixtojd(), wenn Datumskonvertierungen zwischen verschiedenen Kalendersystemen durchgeführt werden sollen. Sie gehört zur Calendar-Extension, die seit PHP 4.1 standardmäßig verfügbar ist.

Das zurückgegebene Array enthält die Felder date (formatiertes Datum als Zeichenkette), month, day, year, dow (Wochentag als Zahl, 0 = Sonntag), abbrevdayname, dayname, abbrevmonth und monthname.

Parameter

Name Typ Default Beschreibung
$julian_day Pflicht int Der Julianische Tageszähler (Julian Day Count), der konvertiert werden soll. Kann z. B. mit cal_to_jd() oder unixtojd() erzeugt werden.
$calendar Pflicht int Das Zielsystem, in das konvertiert wird. Zulässige Konstanten: CAL_GREGORIAN, CAL_JULIAN, CAL_JEWISH, CAL_FRENCH.

Rückgabewert

Typ
array
Beschreibung

Gibt ein assoziatives Array mit folgenden Schlüsseln zurück:

  • date – Datum als Zeichenkette im Format Monat/Tag/Jahr
  • month – Monatszahl
  • day – Tageszahl
  • year – Jahreszahl
  • dow – Wochentag als Integer (0 = Sonntag, 6 = Samstag)
  • abbrevdayname – Abgekürzter Wochentagsname (englisch)
  • dayname – Vollständiger Wochentagsname (englisch)
  • abbrevmonth – Abgekürzter Monatsname (englisch)
  • monthname – Vollständiger Monatsname (englisch)

Beispiele

Aktuelles Datum aus Unix-Timestamp in gregorianisches Kalenderdatum umwandeln

<?php
// Aktuellen Unix-Timestamp in Julian Day Count umwandeln
$jd = unixtojd(mktime(0, 0, 0, 6, 15, 2024));

// Julian Day Count zurück in gregorianisches Datum konvertieren
$result = cal_from_jd($jd, CAL_GREGORIAN);

echo "Datum: " . $result['date'] . "\n";
echo "Tag: " . $result['day'] . "\n";
echo "Monat: " . $result['month'] . "\n";
echo "Jahr: " . $result['year'] . "\n";
echo "Wochentag: " . $result['dayname'] . "\n";
Datum: 6/15/2024 Tag: 15 Monat: 6 Jahr: 2024 Wochentag: Saturday

Gregorianisches Datum in jüdisches Datum umrechnen

<?php
// Gregorianisches Datum -> Julian Day Count
$jd = cal_to_jd(CAL_GREGORIAN, 10, 7, 2023);

// Julian Day Count -> Jüdisches Datum
$jewish = cal_from_jd($jd, CAL_JEWISH);

echo "Jüdisches Datum: " . $jewish['date'] . "\n";
echo "Monat (jüdisch): " . $jewish['monthname'] . "\n";
echo "Jahr (jüdisch): " . $jewish['year'] . "\n";
Jüdisches Datum: 7/22/5784 Monat (jüdisch): Tishri Jahr (jüdisch): 5784

Unterschied zwischen Gregorianischem und Julianischem Kalender zeigen

<?php
// Ein historisches Datum im Julianischen Kalender
$jd = cal_to_jd(CAL_JULIAN, 2, 18, 1700);

$gregorian = cal_from_jd($jd, CAL_GREGORIAN);
$julian    = cal_from_jd($jd, CAL_JULIAN);

echo "Julianisch:    " . $julian['date'] . "\n";
echo "Gregorianisch: " . $gregorian['date'] . "\n";
Julianisch: 2/18/1700 Gregorianisch: 2/28/1700

// Wichtig · Fallstricke

Erweiterung erforderlich: cal_from_jd() benötigt die Calendar-Extension (ext/calendar). Diese ist unter Unix/Linux standardmäßig eingebunden; unter Windows muss extension=calendar in der php.ini aktiviert sein.

Englische Ausgabe: Die Felder dayname, abbrevdayname, monthname und abbrevmonth werden immer auf Englisch ausgegeben, unabhängig von der Locale-Einstellung.

Gültigkeitsbereiche: Jeder Kalender hat einen begrenzten gültigen Datumsbereich. Für den Französischen Revolutionskalender (CAL_FRENCH) gelten z. B. nur Daten zwischen 1792 und 1806. Bei ungültigen JD-Werten außerhalb des Gültigkeitsbereichs können fehlerhafte oder leere Ergebnisse zurückgegeben werden.