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 — Convertit un jour Julien en timestamp UNIX
Retourne un timestamp UNIX correspondant au jour Julien
julian_day
ou false
si julian_day
n'est pas dans l'intervalle autorisé. Le temps retourné est UTC.
julian_day
Le nombre de jours Julien, compris entre
2440588
et 106751993607888
sur
les systèmes 64bit, ou compris entre
2440588
et 2465443
sur les systèmes
32bit.
Le timestamp unix pour le début (minuit, pas midi) du jour Julien donné.
Si julian_day
est hors de l'intervalle autorisé,
une ValueError est lancé.
Version | Description |
---|---|
8.0.0 |
Cette fonction ne retourne désormais plus false en cas d'échec,
mais lève une ValueError à la place.
|
7.3.24, 7.4.12 |
La limite supérieure du paramètre julian_day a été
étendue. Avant, elle était de 2465342 suivant
l'architecture.
|
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.
Remember that UNIX timestamps indicate a number of seconds from midnight of January 1, 1970 on the Gregorian calendar, not the Julian Calendar.
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