If you need an easy way to convert a decimal julian day to an unix timestamp you can use:
$unixTimeStamp = ($julianDay - 2440587.5) * 86400;
2440587.5 is the julian day at 1/1/1970 0:00 UTC
86400 is the number of seconds in a day
(PHP 4, PHP 5, PHP 7, PHP 8)
jdtounix — Konvertiert ein julianisches Datum in einen Unix-Timestamp
Diese Funktion gibt einen Unix-Timestamp (in Sekunden seit dem 1.1.1970)
zurück, der dem in julian_day
übergebenen
julianischen Datum entspricht. Die zurückgegebene Zeit ist UTC.
julian_day
Die Zahl eines julianischen Tages zwischen 2440588
und 106751993607888
auf 64-Bit-Systemen oder
zwischen 2440588
und 2465443
auf
32-Bit-Systemen.
Der Unix-Timestamp für den Anfang (Mitternacht, nicht Mittag) des angegebenen julianischen Tages.
Falls julian_day
außerhalb des zulässigen Bereichs
liegt, wird ein ValueError ausgelöst.
Version | Beschreibung |
---|---|
8.0.0 |
Diese Funktion gibt im Fehlerfall nicht mehr false zurück, sondern
löst stattdessen einen ValueError aus.
|
7.3.24, 7.4.12 |
Die Obergrenze von julian_day wurde erweitert.
Bisher lag sie unabhängig von der Architektur bei
2465342 .
|
If you need an easy way to convert a decimal julian day to an unix timestamp you can use:
$unixTimeStamp = ($julianDay - 2440587.5) * 86400;
2440587.5 is the julian day at 1/1/1970 0:00 UTC
86400 is the number of seconds in a day
Warning: the calender functions involving julian day operations seem to ignore the decimal part of the julian day count.
This means that the returned date is wrong 50% of the time, since a julian day starts at decimal .5 . Take care!!
Remember that unixtojd() assumes your timestamp is in GMT, but jdtounix() returns a timestamp in localtime.
This fooled me a few times.
So if you have:
$timestamp1 = time();
$timestamp2 = jdtounix(unixtojd($timestamp1));
Unless your localtime is the same as GMT, $timestamp1 will not equal $timestamp2.
unixtojd() assumes that your timestamp is in GMT, but jdtounix() returns a timestamp in localtime.
so
<?php
$d1=jdtogregorian(unixtojd(time()));
$d2= gmdate("m/d/Y");
$d3=date("m/d/Y");
?>
$d1 always equals $d2 but $d1 may differ from $d3
Remember that UNIX timestamps indicate a number of seconds from midnight of January 1, 1970 on the Gregorian calendar, not the Julian Calendar.