W3docs

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.
KalenderkonstanteKalender
CAL_GREGORIANGregorianisch (der alltägliche bürgerliche Kalender)
CAL_JULIANJulianisch
CAL_JEWISHJüdisch
CAL_FRENCHFranzö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üsselBeschreibung
dateDas Datum als month/day/year string
monthMonatsnummer (1–12 für Gregorianisch)
dayTag des Monats
yearJahr
dowWochentag als Zahl (0 = Sonntag)
abbrevdaynameAbgekürzter Tagesname (z. B. Mon)
daynameVollständiger Tagesname (z. B. Monday)
abbrevmonthAbgekürzter Monatsname (z. B. Jan)
monthnameVollstä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: Monday

Das 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 erwartet cal_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 die calendar-Erweiterung in Ihrer PHP-Installation.
  • Wählen Sie die passende Kalenderkonstante. Dieselbe JTZ liefert unterschiedliche year/month/day-Werte für CAL_GREGORIAN gegenüber CAL_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.

Übung

Übung
Was macht die PHP-Funktion cal_from_jd()?
Was macht die PHP-Funktion cal_from_jd()?
Was this page helpful?