Delicious Bookmark this on Delicious Share on Facebook SlashdotSlashdot It! Digg! Digg



PHP : Function Reference : Calendar Functions : jdtounix

jdtounix

Convert Julian Day to Unix timestamp (PHP 4, PHP 5)
int jdtounix ( int jday )


Code Examples / Notes » jdtounix

27-jan-2005 02:50

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!!


seb

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.


pipian

Remember that UNIX timestamps indicate a number of seconds from midnight of January 1, 1970 on the Gregorian calendar, not the Julian Calendar.

erelsgl dot nospam

Just to clarify the differences between the different methods to convert a date to a timestamp.
Suppose:
<?php
$x = JDToUnix(GregorianToJD(9,23,2006));
$y = strtotime('2006-09-23');
$z = (GregorianToJD(9,23,2006) - 2440587.5) * 86400;
?>
Then, on a machine whoze timezone is GMT-0400, we get the following results:
<?php
$x === 1158969600;
$y === 1158984000;  //  $x + 4 hours
$z === 1159012800;  //  $x + 12 hours
?>


fabio

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


hrabi

Beware, jd here is not (astronomical or geocentric) Julian Day (JD), but Chronological Julian Day (CJD)! When JD start at noon of UTC time (12:00 UTC), CJD start at midnight at *local* time! Or considering head "Chronlogical Julian Day/Date" at "http://www.decimaltime.hynes.net/dates.html", when day localy start (it should be at sunset for instance).
try this...
<?php
define("UJD", 2440587.5);
define("SEC4DAY", 86400);
function u2j($tm) {
  return $tm / SEC4DAY + UJD;
}
function mmd($txt, $str_time) {
  $t = strtotime($str_time);
  $j = unixtojd($t);
  $j_fabio = u2j($t);
  $s = strftime('%D %T %Z', $t);
  printf("${txt} => %s, CJD: %s, JD: %s
\n", $s, $j, $j_fabio);
}
$xt = strtotime("1.1.1970 0:00.00 GMT");
$slb = "-1 day 23:30"; // let CJD be N
$sla = "0:30.00"; // should be N+1
$slm = "0:00"; // should be N+1
$sgmt = "0:00.00 GMT"; // don't forget to observe JD.
mmd("local before", $slb);
mmd("local after", $sla);
mmd("local midnight", $slm);
mmd("GMT midnight", $sgmt);
?>
I got this (you see, JD havn't change day, because UTC noon is far away):
local before => 03/28/07 23:30:00 CEST, CJD: 2454188, JD: 2454188.39583
local after => 03/29/07 00:30:00 CEST, CJD: 2454189, JD: 2454188.4375
local midnight => 03/29/07 00:00:00 CEST, CJD: 2454189, JD: 2454188.41667
GMT midnight => 03/29/07 02:00:00 CEST, CJD: 2454189, JD: 2454188.5


Change Language


Follow Navioo On Twitter
cal_days_in_month
cal_from_jd
cal_info
cal_to_jd
easter_date
easter_days
FrenchToJD
GregorianToJD
JDDayOfWeek
JDMonthName
JDToFrench
JDToGregorian
jdtojewish
JDToJulian
jdtounix
JewishToJD
JulianToJD
unixtojd
eXTReMe Tracker