W3docs

unixtojd()

Erfahren Sie, wie Sie in PHP mit unixtojd() einen Unix-Timestamp in eine Julianische Tageszahl umwandeln, mit Beispielen und Rückkonvertierung.

Einen Unix-Timestamp in eine Julianische Tageszahl in PHP umwandeln

Die PHP-Funktion unixtojd() wandelt einen Unix-Timestamp in eine Julianische Tageszahl um — eine einzelne Ganzzahl, die die Anzahl der Tage seit Beginn der Julianischen Periode (1. Januar 4713 v. Chr. im proleptischen Julianischen Kalender) zählt. Diese Seite erklärt, was die Funktion zurückgibt, wie man sie aufruft, in welchen Fällen sie von der Intuition abweicht und wie man den Vorgang umkehrt.

Ein Unix-Timestamp ist die Anzahl der Sekunden, die seit dem 1. Januar 1970, 00:00:00 UTC vergangen sind. Eine Julianische Tageszahl (JDN) ist eine kontinuierliche Tageszählung, die in der Astronomie und bei Kalenderberechnungen weit verbreitet ist, weil die Differenz zwischen zwei Julianischen Tagen einfach die Anzahl der Tage zwischen ihnen ist — ohne Monats- oder Schaltjahresarithmetik. Beachten Sie, dass der „Julianische Tag" hier nicht dasselbe ist wie ein Datum im historischen Julianischen Kalender; es handelt sich um eine fortlaufende Tageszählung.

Wie unixtojd() funktioniert

unixtojd() nimmt die ganzzahlige Anzahl von Sekunden eines Unix-Timestamps, teilt sie auf ganze Tage herunter und addiert die Julianische Tageszahl des Unix-Epochenbeginns (1970-01-01), der 2440588 ist. Die Umrechnung erfolgt in UTC und das Ergebnis hat Tagesgenauigkeit — die Stunden, Minuten und Sekunden im Timestamp werden verworfen, sodass jeder Moment innerhalb desselben UTC-Tages auf dieselbe Julianische Tageszahl abgebildet wird.

unixtojd() ist Teil der Calendar-Erweiterung von PHP. Sie ist bei den meisten Builds standardmäßig einkompiliert, aber bei einer minimalen PHP-Installation müssen Sie möglicherweise die calendar-Erweiterung aktivieren, bevor die Funktion verfügbar ist.

Syntax

unixtojd(?int $timestamp = null): int|false
  • $timestamp — Der zu konvertierende Unix-Timestamp. Wenn er weggelassen wird (oder null ist), wird die aktuelle Zeit verwendet, genau so als ob Sie time() übergeben hätten.
  • Gibt eine ganzzahlige Julianische Tageszahl zurück, oder false, wenn der Timestamp nicht konvertiert werden konnte.

Einfaches Beispiel

Den aktuellen Unix-Timestamp in eine Julianische Tageszahl umwandeln:

php— editable, runs on the server

Dies gibt den aktuellen Unix-Timestamp und die entsprechende Julianische Tageszahl aus.

Bekannte Referenzpunkte

Da die Umrechnung fest ist, erzeugen einige Timestamps immer dieselbe Julianische Tageszahl. Diese sind praktisch zur Überprüfung Ihres Codes:

<?php

echo unixtojd(0), "\n";                          // 2440588  -> 1970-01-01 (the Unix epoch)
echo unixtojd(mktime(0, 0, 0, 1, 1, 2000)), "\n"; // 2451545  -> 2000-01-01
echo unixtojd(mktime(0, 0, 0, 7, 4, 2025)), "\n"; // 2460861  -> 2025-07-04

Aufruf ohne Argument

Kein Argument zu übergeben ist gleichbedeutend mit der Übergabe von time(), sodass beide folgenden Zeilen denselben Wert zurückgeben:

<?php

echo unixtojd(), "\n";        // current day, no timestamp needed
echo unixtojd(time()), "\n";  // identical result

Rückkonvertierung: jdtounix()

Das Gegenstück zu unixtojd() ist jdtounix(), das eine Julianische Tageszahl zurück in einen Unix-Timestamp umwandelt, der auf Mitternacht UTC dieses Tages gesetzt ist. Da unixtojd() die Tageszeit verwirft, landet eine Hin- und Rückkonvertierung am Tagesbeginn und nicht am ursprünglichen Zeitpunkt:

<?php

$start = mktime(15, 30, 0, 7, 4, 2025); // 2025-07-04 15:30:00
$jd    = unixtojd($start);
$back  = jdtounix($jd);

echo "Original: ", gmdate("Y-m-d H:i:s", $start), " UTC\n"; // 2025-07-04 15:30:00 UTC
echo "Back:     ", gmdate("Y-m-d H:i:s", $back),  " UTC\n"; // 2025-07-04 00:00:00 UTC

Wann würde ich das verwenden?

Julianische Tageszahlen sind besonders nützlich, wenn Sie ganze Tage zwischen zwei Daten zählen müssen, ohne sich mit Monatslängen und Schaltjahren herumschlagen zu müssen: astronomische Berechnungen, Terminplanungslogik, „Tage bis"-Zähler und die Interoperabilität mit wissenschaftlichen Datensätzen, die Daten als Julianische Tage speichern. Für normale Datumsformatierung und -arithmetik sind die DateTime-API und Datumsfunktionen in der Regel die bessere Wahl.

Fazit

unixtojd() konvertiert einen Unix-Timestamp in eine Julianische Tageszahl — eine tagesgenaue UTC-Zählung, die beim Epochenwert 2440588 beginnt. Ohne Argument wird die aktuelle Zeit verwendet, der Tageszeitteil wird ignoriert, und die Umkehrfunktion ist jdtounix(). Kombinieren Sie sie mit mktime() und time(), um jeden Zeitpunkt in eine Julianische Tageszahl für tagesbasierte Berechnungen umzuwandeln.

Übungen

Übung
Was ist der Zweck der Funktion unixtojd() in PHP?
Was ist der Zweck der Funktion unixtojd() in PHP?
Was this page helpful?