PHP Doku:: Konvertiert Julianisches Datum in Unix-Timestamp - function.jdtounix.html

Verlauf / Chronik / History: (1) anzeigen

Sie sind hier:
Doku-StartseitePHP-HandbuchFunktionsreferenzDatums- und zeitrelevante ErweiterungenKalenderCalendar Funktionenjdtounix

Ein Service von Reinhard Neidl - Webprogrammierung.

Calendar Funktionen




(PHP 4, PHP 5)

jdtounix Konvertiert Julianisches Datum in Unix-Timestamp


int jdtounix ( int $jday )

Diese Funktion liefert einen Unix-Timestamp (in Sekunden seit dem 1.1.1970) zurück, der dem in jday übergebenen Julianischen Datum entspricht. Liegt jday außerhalb des darstellbaren Zeitbereichs (Gregorianische Jahre von 1970 bis 2037 bzw. 2440588 <= jday <= 2465342 ), so wird FALSE zurückgegeben.



Ein Julianischer Tag zwischen 2440588 and 2465342.


Der Unix-Timestamp für den Anfang des gegebenen Julianischen Tages.

Siehe auch

  • unixtojd() - Konvertiert Unix-Timestamp in Julianisches Datum

6 BenutzerBeiträge:
- Beiträge aktualisieren...
hrabi at linuxwaves dot com
29.03.2007 17:16
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 "", when day localy start (it should be at sunset for instance).

try this...
("UJD", 2440587.5);
define("SEC4DAY", 86400);

u2j($tm) {
$tm / SEC4DAY + UJD;

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<br>\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
erelsgl dot NOSPAM at cs dot technion dot ac dot il
19.09.2006 15:31
Just to clarify the differences between the different methods to convert a date to a timestamp.


= 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:
=== 1158969600;
$y === 1158984000//  $x + 4 hours
$z === 1159012800//  $x + 12 hours
fabio at llgp dot org
31.08.2006 11:14
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

27.01.2005 15: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 at carbonauts dot com
21.10.2003 21:10
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 at pipian dot com
12.06.2003 18:29
Remember that UNIX timestamps indicate a number of seconds from midnight of January 1, 1970 on the Gregorian calendar, not the Julian Calendar.

PHP Powered Diese Seite bei
The PHP manual text and comments are covered by the Creative Commons Attribution 3.0 License © the PHP Documentation Group - Impressum - mail("TO:Reinhard Neidl",...)