cal_from_jd()
Die Funktion cal_from_jd() wandelt eine Julianische Tageszahl in ein Datum eines unterstützten Kalenders um – erklärt mit Beispielen.
PHP cal_from_jd() Funktion
Die Funktion cal_from_jd() wandelt eine Julianische Tageszahl (eine einzelne Ganzzahl) in ein Datum im Kalender Ihrer Wahl um – Gregorianisch, Julianisch, Jüdisch oder Französisch Republikanisch. Sie gibt ein assoziatives array zurück, das Jahr, Monat, Tag und mehrere praktisch formatierte Zeichenketten (Tagesname, Monatsname, Wochentag) enthält.
Diese Seite erklärt, was eine Julianische Tageszahl ist, wie cal_from_jd() funktioniert, jeden Schlüssel im zurückgegebenen array und wie sich die Funktion von den verwandten Kalenderfunktionen in PHP unterscheidet. Die calendar-Erweiterung muss aktiviert sein, damit diese Funktionen verfügbar sind.
Syntax
cal_from_jd(int $julian_day, int $calendar): array$julian_day— die zu konvertierende Julianische Tageszahl. Es handelt sich um eine Ganzzahl; ein Float wird abgeschnitten.$calendar— in welchen Kalender konvertiert werden soll. Verwenden Sie eine der folgenden Konstanten.
| Kalenderkonstante | Kalender |
|---|---|
CAL_GREGORIAN | Gregorianisch (der alltägliche bürgerliche Kalender) |
CAL_JULIAN | Julianisch |
CAL_JEWISH | Jüdisch |
CAL_FRENCH | Französisch Republikanisch |
Die Funktion gibt immer ein array zurück – bei einer gültigen Ganzzahl-Eingabe gibt es keinen Fehlerrückgabewert.
Was ist eine Julianische Tageszahl?
Eine Julianische Tageszahl (JTZ) ist eine fortlaufende Zählung ganzer Tage ab Mittag UTC am 1. Januar 4713 v. Chr. im proleptischen Julianischen Kalender. Da es sich um eine einzelne wachsende Ganzzahl ohne Monate oder Schaltjahrregeln handelt, eignet sie sich ideal als neutraler Drehpunkt bei der Konvertierung zwischen Kalendersystemen: Sie konvertieren ein beliebiges Kalenderdatum in eine JTZ und dann diese JTZ in den Zielkalender.
Astronomie, Software und historische Forschung nutzen sie genau aus diesem Grund – Datumsarithmetik mit einer einfachen Ganzzahl ist unkompliziert und eindeutig.
Verwechseln Sie die Julianische Tageszahl nicht mit dem Julianischen Kalender. Die Tageszahl ist nur eine Zahl; der Julianische Kalender ist der ältere Kalender, den Papst Gregor XIII. im Oktober 1582 reformierte, um den Gregorianischen Kalender zu schaffen, den wir heute verwenden.
Das array, das cal_from_jd() zurückgibt
Für eine gegebene Julianische Tageszahl gibt cal_from_jd() ein assoziatives array mit folgenden Schlüsseln zurück:
| Schlüssel | Beschreibung |
|---|---|
date | Das Datum als month/day/year string |
month | Monatsnummer (1–12 für Gregorianisch) |
day | Tag des Monats |
year | Jahr |
dow | Wochentag als Zahl (0 = Sonntag) |
abbrevdayname | Abgekürzter Tagesname (z. B. Mon) |
dayname | Vollständiger Tagesname (z. B. Monday) |
abbrevmonth | Abgekürzter Monatsname (z. B. Jan) |
monthname | Vollständiger Monatsname (z. B. January) |
Grundlegendes Beispiel
Konvertieren Sie eine Julianische Tageszahl in ein Gregorianisches Datum und lesen Sie die Komponenten aus:
<?php
$jd = gregoriantojd(3, 22, 2021); // JDC for March 22, 2021
$date = cal_from_jd($jd, CAL_GREGORIAN);
echo "Date string: " . $date['date'] . "\n";
echo "Year: " . $date['year'] . "\n";
echo "Month: " . $date['monthname'] . "\n";
echo "Day: " . $date['day'] . "\n";
echo "Weekday: " . $date['dayname'] . "\n";
?>Dies gibt aus:
Date string: 3/22/2021
Year: 2021
Month: March
Day: 22
Weekday: MondayDas gesamte array untersuchen
Wenn Sie unsicher sind, welche Schlüssel Sie benötigen, geben Sie den vollständigen Rückgabewert aus:
<?php
$jd = gregoriantojd(12, 25, 2021); // Christmas 2021
print_r(cal_from_jd($jd, CAL_GREGORIAN));
?>Ausgabe:
Array
(
[date] => 12/25/2021
[month] => 12
[day] => 25
[year] => 2021
[dow] => 6
[abbrevdayname] => Sat
[dayname] => Saturday
[abbrevmonth] => Dec
[monthname] => December
)Häufige Fallstricke
- Ganzzahl, kein Float mit
.5. Anders als das astronomische Julianische Datum erwartetcal_from_jd()eine ganzzahlige Tageszahl. Die Übergabe eines Float schneidet den Nachkommaanteil einfach ab. - Die
calendar-Erweiterung muss geladen sein. Wenn Sie den Fehler "Call to undefined function cal_from_jd()" erhalten, aktivieren Sie diecalendar-Erweiterung in Ihrer PHP-Installation. - Wählen Sie die passende Kalenderkonstante. Dieselbe JTZ liefert unterschiedliche
year/month/day-Werte fürCAL_GREGORIANgegenüberCAL_JULIAN; übergeben Sie immer die Konstante, die Sie tatsächlich meinen.
Verwandte Funktionen
cal_to_jd()— die Umkehrfunktion: ein Kalenderdatum in eine Julianische Tageszahl umwandeln.gregoriantojd()— eine Julianische Tageszahl aus einem Gregorianischen Datum ermitteln.jdtogregorian()— eine Julianische Tageszahl zurück in einen Gregorianischen Datumsstring konvertieren.cal_info()— Monats-/Tagesnamen und andere Metadaten für einen Kalender auflisten.jddayofweek()— den Wochentag für eine Julianische Tageszahl ermitteln.
Fazit
cal_from_jd() wandelt eine Julianische Tageszahl in ein reichhaltiges array von Datumsbestandteilen für jeden der vier von PHP unterstützten Kalender um. In Kombination mit cal_to_jd() (oder gregoriantojd()) ermöglicht es die Konvertierung von Datumsangaben zwischen Kalendersystemen, indem als neutrales Zwischenelement eine einzelne Ganzzahl – die Julianische Tageszahl – verwendet wird.