Start · Sprachen · PHP · Referenz · unixtojd

unixtojd

Funktion

Konvertiert einen Unix-Timestamp in eine Julianische Tagesnummer (Julian Day Number).

seit PHP 4.0.0 Kategorie: date

Signatur

unixtojd(int $timestamp = time()): int

Beschreibung

unixtojd() wandelt einen Unix-Timestamp (Sekunden seit dem 1. Januar 1970 00:00:00 UTC) in die entsprechende Julianische Tagesnummer (Julian Day Number, JDN) um. Die Julianische Tagesnummer ist ein kontinuierlicher Zähler für Tage, der beim 1. Januar 4713 v. Chr. beginnt und in der Astronomie sowie bei Kalenderberechnungen weit verbreitet ist.

Die Funktion ist besonders nützlich, wenn man zwischen verschiedenen Kalendersystemen konvertieren möchte, da PHP-Funktionen wie jdtogregorian(), jdtojulian() oder jdtojewish() alle die Julianische Tagesnummer als Eingabe erwarten. So lässt sich ein Unix-Timestamp indirekt in nahezu jedes Kalendersystem umrechnen.

Wird kein Parameter übergeben, verwendet die Funktion automatisch den aktuellen Unix-Timestamp, also den aktuellen Zeitpunkt. Zu beachten ist, dass die Julianische Tagesnummer immer auf Tagesbasis arbeitet – die Uhrzeit-Information des Timestamps geht dabei verloren.

Parameter

Name Typ Default Beschreibung
$timestamp int time() Ein Unix-Timestamp als Ganzzahl. Wird dieser Parameter weggelassen, wird der aktuelle Unix-Timestamp (time()) verwendet.

Rückgabewert

Typ
int
Beschreibung
Gibt die Julianische Tagesnummer (Julian Day Number) zurück, die dem übergebenen Unix-Timestamp entspricht. Der Rückgabewert ist eine Ganzzahl.

Beispiele

Aktuellen Timestamp in Julianisches Datum umwandeln

<?php
// Aktuelles Datum als Julianische Tagesnummer
$jd = unixtojd();
echo "Julianische Tagesnummer heute: " . $jd . PHP_EOL;

// Rückkonvertierung in gregorianisches Datum
$gregorianisch = jdtogregorian($jd);
echo "Gregorianisches Datum: " . $gregorianisch . PHP_EOL;
Julianische Tagesnummer heute: 2460490 Gregorianisches Datum: 5/21/2024

Unix-Timestamp eines bestimmten Datums konvertieren

<?php
// Unix-Timestamp für den 1. Januar 2000 (Mitternacht UTC)
$timestamp = mktime(0, 0, 0, 1, 1, 2000);
$jd = unixtojd($timestamp);
echo "Unix-Timestamp: " . $timestamp . PHP_EOL;
echo "Julianische Tagesnummer: " . $jd . PHP_EOL;

// Konvertierung in verschiedene Kalender
echo "Gregorianisch: " . jdtogregorian($jd) . PHP_EOL;
echo "Julianisch:    " . jdtojulian($jd) . PHP_EOL;
echo "Jüdisch:       " . jdtojewish($jd) . PHP_EOL;
Unix-Timestamp: 946684800 Julianische Tagesnummer: 2451545 Gregorianisch: 1/1/2000 Julianisch: 12/19/1999 Jüdisch: 23/10/5760

// Wichtig · Fallstricke

Zeitzonenabhängigkeit: Da die Julianische Tagesnummer nur auf Tagesbasis arbeitet, kann das Ergebnis je nach Zeitzone variieren. Ein Timestamp knapp vor Mitternacht UTC kann je nach lokaler Zeitzone einem anderen Tag zugeordnet werden. Für konsistente Ergebnisse sollte man sicherstellen, dass der übergebene Timestamp auf UTC basiert.

Erweiterung erforderlich: Die Funktion unixtojd() gehört zur Calendar-Erweiterung, die in den meisten Standard-PHP-Installationen aktiviert ist, aber nicht zwingend vorhanden sein muss. Bei Bedarf muss die Erweiterung explizit aktiviert oder nachinstalliert werden.

Wertebereich: Unix-Timestamps vor dem 1. Januar 1970 (negative Werte) können auf manchen Systemen zu unerwarteten Ergebnissen führen.