W3docs

gregoriantojd()

Die Funktion gregoriantojd() konvertiert ein gregorianisches Datum in eine julianische Tageszahl und erleichtert so die Datumsarithmetik.

Einführung

Die PHP-Funktion gregoriantojd() konvertiert ein Datum im Gregorianischen Kalender in eine Julianische Tageszahl — eine einzelne ganze Zahl, die ein Datum darstellt, indem die seit einem festen Ausgangspunkt vergangenen Tage gezählt werden. Diese Seite erklärt, was diese Begriffe bedeuten, zeigt die Signatur der Funktion und ihre Rückgabewerte, führt durch ein funktionierendes Beispiel und verweist auf die inverse und verwandte Kalenderfunktionen.

gregoriantojd() ist Teil der in PHP integrierten Calendar-Erweiterung. Sie ist nicht veraltet, aber die meisten modernen Projekte benötigen Julianische Tageszahlen nur für Astronomie, Interoperabilität mit wissenschaftlichen Daten oder zur Konvertierung zwischen Kalendersystemen. Für alltägliche Datumsarithmetik und -formatierung sollte stattdessen die Klasse DateTime verwendet werden.

Geschichte des Gregorianischen Kalenders

Der Gregorianische Kalender wurde eingeführt, um die Fehler im Julianischen Kalender zu korrigieren. Der Julianische Kalender basierte auf der Annahme, dass ein Jahr genau 365,25 Tage lang sei. Dies war jedoch nicht ganz korrekt, und der Kalender verlor allmählich seine Übereinstimmung mit dem Sonnenjahr. Zum Zeitpunkt der Einführung des Gregorianischen Kalenders war der Julianische Kalender um 10 Tage verschoben.

Der Gregorianische Kalender löste dieses Problem, indem er ein neues System zur Berechnung von Schaltjahren einführte. Im Gregorianischen Kalender ist ein Jahr ein Schaltjahr, wenn es durch 4 teilbar ist, aber nicht durch 100, es sei denn, es ist auch durch 400 teilbar. Das bedeutet, dass Jahre wie 1700, 1800 und 1900 keine Schaltjahre sind, aber 1600 und 2000 schon.

Syntax

gregoriantojd(int $month, int $day, int $year): int

Die Funktion nimmt drei ganzzahlige Argumente in der Reihenfolge Monat, Tag, Jahr entgegen — zu beachten ist, dass der Monat zuerst kommt, nicht der Tag:

  • $month — der Monat, 1 (Januar) bis 12 (Dezember).
  • $day — der Tag des Monats, 1 bis 31.
  • $year — das Jahr. Der gültige Bereich reicht von -4714 bis 9999. Das Jahr 0 ist nicht gültig.

Die Funktion gibt die Julianische Tageszahl als ganze Zahl zurück, oder 0, wenn das Datum außerhalb des gültigen Bereichs liegt.

Was ist eine Julianische Tageszahl?

Eine Julianische Tageszahl ist eine Methode, ein beliebiges Kalenderdatum als einzelne, stets ansteigende ganze Zahl darzustellen. Die Zählung beginnt am Mittag des 1. Januar 4713 v. Chr. (im proleptischen Julianischen Kalender). Da jedes Datum zu einer Zahl wird, lässt sich die Anzahl der Tage zwischen zwei Daten durch einfache Subtraktion ermitteln, unabhängig von Monaten, Schaltjahren oder Kalendergrenzen — genau deshalb verwenden Astronomen und wissenschaftliche Datenformate sie.

Konvertierung eines Gregorianischen Datums

Um den 14. Februar 2023 in eine Julianische Tageszahl zu konvertieren, werden Monat, Tag und Jahr übergeben:

$jd = gregoriantojd(2, 14, 2023);
echo $jd; // 2459990

Die Variable $jd enthält nun 2459990, die Julianische Tageszahl für dieses Datum.

Umgang mit ungültigen Daten

Wenn das Datum außerhalb des unterstützten Bereichs liegt, gibt gregoriantojd() 0 zurück, anstatt einen Fehler auszulösen. Ein Ergebnis von 0 sollte als „ungültige Eingabe" behandelt werden:

$jd = gregoriantojd(13, 40, 2023); // month 13, day 40 — invalid
if ($jd === 0) {
    echo "Invalid date.";
}

Rückkonvertierung

Um den umgekehrten Weg zu gehen — von einer Julianischen Tageszahl zurück zu einem Gregorianischen Datumsstring — wird die inverse Funktion jdtogregorian() verwendet:

$jd = gregoriantojd(2, 14, 2023);
echo jdtogregorian($jd); // 2/14/2023

Wann wird diese Funktion verwendet?

gregoriantojd() wird benötigt, wenn:

  • Tage zwischen zwei Daten gezählt werden sollen, indem deren Julianische Tageszahlen subtrahiert werden.
  • Zwischen Kalendersystemen konvertiert werden soll (zum Beispiel von Gregorianisch nach Julianisch oder in jüdische Daten) mithilfe der anderen Calendar-Funktionen von PHP.
  • Der Wochentag für ein Datum mit jddayofweek() ermittelt werden soll.

Für normale Anwendungsarbeit — Eingaben parsen, Ausgaben formatieren, Intervalle hinzufügen — sollte die Klasse DateTime bevorzugt werden, die zeitzonen-bewusst und wesentlich komfortabler ist.

Fazit

gregoriantojd() konvertiert ein Gregorianisches Datum in eine einzelne Julianische Tageszahl als ganze Zahl und macht Datumsarithmetik und kalenderübergreifende Konvertierungen unkompliziert. Die Reihenfolge der Argumente (Monat zuerst) sollte beachtet, bei ungültiger Eingabe auf einen Rückgabewert von 0 geprüft und jdtogregorian() zur Rückkonvertierung verwendet werden. Für allgemeine Datumsverarbeitung bleibt die Klasse DateTime das richtige Werkzeug.

Übungen

Übung
Was ist der Zweck der PHP-Funktion 'gregoriantojd'?
Was ist der Zweck der PHP-Funktion 'gregoriantojd'?
Was this page helpful?