Signatur
Beschreibung
jdtounix() wandelt eine Julianische Tageszahl (Julian Day Number, JDN) in einen Unix-Timestamp (Sekunden seit dem 1. Januar 1970 00:00:00 UTC) um. Die Funktion ist Teil der Kalenderumrechnungs-Erweiterung von PHP und arbeitet eng mit Funktionen wie unixtojd(), gregoriantojd() oder jdtogregorian() zusammen.
Die Julianische Tageszahl ist ein kontinuierliches Zählsystem für Tage, das in der Astronomie und bei Kalenderberechnungen eingesetzt wird und seinen Ursprung am 1. Januar 4713 v. Chr. hat. Da Unix-Timestamps nur einen begrenzten Datumsbereich abdecken (abhängig von der Plattform typischerweise 1. Januar 1970 bis 19. Januar 2038 für 32-Bit-Systeme), gibt jdtounix() false zurück, wenn der übergebene JDN außerhalb dieses Bereichs liegt.
Typische Anwendungsfälle sind die Kombination mit anderen Kalenderkonvertierungsfunktionen, um ein Datum aus einem anderen Kalendersystem (z. B. Hebräisch, Französisch-Republikanisch, Julianisch) zunächst in eine JDN und dann weiter in einen Unix-Timestamp umzurechnen, der sich mit Standard-PHP-Datumsfunktionen weiterverarbeiten lässt.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $julian_day Pflicht | int | Die Julianische Tageszahl (Julian Day Number), die in einen Unix-Timestamp umgewandelt werden soll. Der Wert muss im gültigen Unix-Timestamp-Bereich liegen, andernfalls gibt die Funktion false zurück. |
Rückgabewert
int zurück, der dem übergebenen Julianischen Tagesdatum entspricht. Liegt der JDN außerhalb des darstellbaren Unix-Timestamp-Bereichs, wird false zurückgegeben.Beispiele
Aktuelles Datum als JDN in Unix-Timestamp umwandeln
<?php
// Heutiges Datum als Julianische Tageszahl ermitteln
$jdn = unixtojd(time());
echo "Julianische Tageszahl: " . $jdn . "\n";
// JDN zurück in Unix-Timestamp konvertieren
$timestamp = jdtounix($jdn);
echo "Unix-Timestamp: " . $timestamp . "\n";
echo "Datum: " . date('d.m.Y', $timestamp) . "\n";
Gregorianisches Datum über JDN in Unix-Timestamp umwandeln
<?php
// Gregorianisches Datum (25. Dezember 2023) in JDN umwandeln
$jdn = gregoriantojd(12, 25, 2023);
echo "JDN fuer 25.12.2023: " . $jdn . "\n";
// JDN in Unix-Timestamp umrechnen
$timestamp = jdtounix($jdn);
if ($timestamp !== false) {
echo "Unix-Timestamp: " . $timestamp . "\n";
echo "Formatiertes Datum: " . date('d.m.Y', $timestamp) . "\n";
} else {
echo "Das Datum liegt ausserhalb des gueltigen Bereichs.\n";
}
Behandlung eines ungültigen JDN außerhalb des Unix-Bereichs
<?php
// JDN fuer das Jahr 1000 n. Chr. (weit vor 1970)
$jdn = gregoriantojd(1, 1, 1000);
echo "JDN: " . $jdn . "\n";
$result = jdtounix($jdn);
if ($result === false) {
echo "Konvertierung fehlgeschlagen: Datum ausserhalb des Unix-Timestamp-Bereichs.\n";
} else {
echo "Timestamp: " . $result . "\n";
}
// Wichtig · Fallstricke
Bereichseinschränkung: Unix-Timestamps sind auf 32-Bit-Systemen auf den Bereich vom 1. Januar 1970 bis zum 19. Januar 2038 begrenzt (Year-2038-Problem). Auf 64-Bit-Systemen ist der Bereich erheblich größer. Verwende stets eine Überprüfung mit === false (strengem Vergleich), da ein Timestamp von 0 (1. Januar 1970) bei losem Vergleich ebenfalls als falsy gewertet würde.
Die Funktion gehört zur Calendar-Erweiterung (ext/calendar), die standardmäßig in den meisten PHP-Installationen aktiviert ist. Für komplexere Datums- und Zeitberechnungen empfiehlt sich die Verwendung der DateTime-Klasse oder DateTimeImmutable, die keine Bereichseinschränkungen durch Unix-Timestamps haben.