unixtojd

(PHP 4, PHP 5, PHP 7, PHP 8)

unixtojd Konvertiert Unix-Timestamp in Julianisches Datum

Beschreibung

unixtojd(?int $timestamp = null): int|false

Diese Funktion konvertiert den in timestamp übergebenen Wert (in Sekunden seit dem 1.1.1970) in das entsprechende Julianische Datum. Wird kein timestamp übergeben, so wird das Julianische Datum des aktuellen Tages zurückgegeben. In beiden Fällen wird die Zeit als lokale Zeit (nicht UTC) angesehen.

Parameter-Liste

timestamp

Ein zu konvertierender Unix Timestamp.

Rückgabewerte

Ein Julianischer Tag als Integer, Bei einem Fehler wird false zurückgegeben..

Changelog

Version Beschreibung
8.0.0 timestamp ist jetzt nullbar.

Siehe auch

  • jdtounix() - Konvertiert ein julianisches Datum in einen Unix-Timestamp

add a note add a note

User Contributed Notes 5 notes

up
1
hrabi at linuxwaves dot com
17 years ago
according to http://www.decimaltime.hynes.net/dates.html#jd and reading "X. Calendar Functions" on this side, it seems that php "jd" is precisely mean as "Chronological Julian Day" (should it be named cjd, and primarily strictly mentioned - isn't it?), used for covnersion between calendar systems. Than it's ok (but Incomplete manual is strongly confusing here IMHO).
Even that, cJD is adjusted to a local time, so... I am rather babeled now, so nothing else :-).
up
1
Anonymous
18 years ago
Its clearly stated that this function returns the Julian Day, not Julian Day + time.

If you want the time with it you will have to do something like:

$t=time();
$jd=unixtojd($t)+($t%60*60*24)/60*60*24;
up
0
hrabi at linuxwaves dot com
17 years ago
This is unusable. Julian Day start at noon, not midnight. It's better to use Fabio solution (however there is a lurk problem with leap second).

<?php
function mmd($txt, $str_time) {
  
$t = strtotime($str_time);
  
$j = unixtojd($t);
  
$s = gmstrftime('%D %T %Z', $t);
  
$j_fabio = $t / 86400 + 2440587.5;

  
printf("${txt} => (%s) %s, %s U, %s J, or %s J<br>\n", $str_time, $s, $t, $j, $j_fabio);
}

//$xt = strtotime("1.1.1970 15:00.00 GMT");
$sam = "9.10.1995 02:00.01 GMT";
$spm = "9.10.1995 22:00.01 GMT";

// unixtojd for $spm returns 2450000 (OK), but for $sam returns 2450000 too! (it is wrong).
mmd("am", $sam);  // should be 2449999 (+ 0.58334)
mmd("pm", $spm);  // should be 2450000 (+ 0.41668)
?>

reference
unix time, and UTC, TAI, ntp, ... problems: http://en.wikipedia.org/wiki/Unix_time
Julian Date Converter: http://aa.usno.navy.mil/data/docs/JulianDate.html
history overview: http://parris.josh.com.au/humour/work/17Nov1858.shtml
up
0
fabio at llgp dot org
18 years ago
If you need an easy way to convert an unix timestamp to a decimal julian day you can use:

$julianDay = $unixTimeStamp / 86400 + 2440587.5;

86400 is the number of seconds in a day;
2440587.5 is the julian day at 1/1/1970 0:00 UTC.
up
0
johnston at capsaicin dot ca
21 years ago
Also note that epoch is in UTC time (epoch is a specific point in time - epoch is not different for every time zone), so be aware of timezone complexities.
To Top