I have used the pctips function to convert an Excel date, just add 2415018.5 (excel epoch) to the numeric date.
// Excel shows 38856 for 19/05/2006
print jd_to_greg(38856 + 2415018.5); // Prints 19/05/2006.
jdtogregorian
(PHP 4, PHP 5)
jdtogregorian — Konvertierung vom Julianischen Datum zum Gregorianischen Kalender
Beschreibung
string jdtogregorian
( int
$julianday
)
Diese Funktion konvertiert den in
julianday angegebenen Tag im Julianischen
Datum in einen String, der das Datum nach dem Gregorianischen
Kalender in der Form "MM/DD/YYYY" enthält.
Parameter-Liste
-
julianday -
Ein Julianischer Tag als Integer
Rückgabewerte
Ein Gregorianisches Datum als String der Form "Monat/Tag/Jahr"
Siehe auch
- gregoriantojd() - Konvertierung vom Gregorianischen Kalender zum Julianischen Datum
- cal_from_jd() - Converts from Julian Day Count to a supported calendar
jdtogregorian
ion at gluch dot org dot mx
13-Dec-2006 06:08
13-Dec-2006 06:08
pctips
06-Jul-2005 11:12
06-Jul-2005 11:12
I have changed treebe's function a bit:
function jd_to_greg($julian) {
$julian = $julian - 1721119;
$calc1 = 4 * $julian - 1;
$year = floor($calc1 / 146097);
$julian = floor($calc1 - 146097 * $year);
$day = floor($julian / 4);
$calc2 = 4 * $day + 3;
$julian = floor($calc2 / 1461);
$day = $calc2 - 1461 * $julian;
$day = floor(($day + 4) / 4);
$calc3 = 5 * $day - 3;
$month = floor($calc3 / 153);
$day = $calc3 - 153 * $month;
$day = floor(($day + 5) / 5);
$year = 100 * $year + $julian;
if ($month < 10) {
$month = $month + 3;
}
else {
$month = $month - 9;
$year = $year + 1;
}
if ($day < 10) {
$day = "0".$day;
}
if ($month < 10) {
$month = "0".$month;
}
return $day."/".$month."/".$year;
}
So, if the in the old format the 1st January 2005 was "1.1.2005", now the function will return "01/01/2005". I hope it could be useful to someone :)
httpwebwitch
22-Jun-2004 07:37
22-Jun-2004 07:37
JD days may have decimal fractions which correspond to the time of day. The Julian day begins at noon, and the decimal fraction measures fractional days until the beginning of the next day at noon.
For instance, Julian Day 2453179.00000 is June 22, 2004, at 12:00pm (noon).
One hour later, it's 2453179.04167
At 2453179.20833 I'll have dinner, and
at 2453179.45833, it's time for the evening news.
After a good night of sleep, my alarm will go off at 2453179.83333,
then at noon on June 23, a new Julian Day begins at 2453180.
To use these functions with fractional days, strip the fractional part with floor(), and apply the function to the integer part.
Then add 12 hours, bringing you to noon of that day. That is the actual time returned by JDToGregorian().
Then add the fractional part of the day, by multiplying the decimal part of the Julian Day by (24*60*60) seconds. This may take you forward or backward to a different Gregorian calendar date.
uni_fl4r3 at t hotmail dot com
14-Sep-2003 05:05
14-Sep-2003 05:05
I have made a slight modification to treebe's jd to greg function, this one will transform a unix timestamp to Gregorian day/month/year format...
function unix_to_greg($unix_timestamp) {
$julian = floor(((($unix_timestamp / "60") / "60") / "24") + "2440588");
$julian = $julian - 1721119;
$calc1 = 4 * $julian - 1;
$year = floor($calc1 / 146097);
$julian = floor($calc1 - 146097 * $year);
$day = floor($julian / 4);
$calc2 = 4 * $day + 3;
$julian = floor($calc2 / 1461);
$day = $calc2 - 1461 * $julian;
$day = floor(($day + 4) / 4);
$calc3 = 5 * $day - 3;
$month = floor($calc3 / 153);
$day = $calc3 - 153 * $month;
$day = floor(($day + 5) / 5);
$year = 100 * $year + $julian;
if ($month < 10)
{
$month = $month + 3;
}else{
$month = $month - 9;
$year = $year + 1;
}
return "$day.$month.$year";
}
treebe
31-May-2003 02:01
31-May-2003 02:01
Julian to Gregorian date change.
If you do not have the calendar extensions loaded this is little function works realy well.
function jd_to_greg($julian) {
$julian = $julian - 1721119;
$calc1 = 4 * $julian - 1;
$year = floor($calc1 / 146097);
$julian = floor($calc1 - 146097 * $year);
$day = floor($julian / 4);
$calc2 = 4 * $day + 3;
$julian = floor($calc2 / 1461);
$day = $calc2 - 1461 * $julian;
$day = floor(($day + 4) / 4);
$calc3 = 5 * $day - 3;
$month = floor($calc3 / 153);
$day = $calc3 - 153 * $month;
$day = floor(($day + 5) / 5);
$year = 100 * $year + $julian;
if ($month < 10) {
$month = $month + 3;
}
else {
$month = $month - 9;
$year = $year + 1;
}
return "$day.$month.$year";
}
19-Jun-2002 04:19
Julian to Gregorian date change.
If you do not have the calendar extensions loaded this is little function works realy well.