PHP Doku:: Konvertierung vom Gregorianischen Kalender zum Julianischen Datum - function.gregoriantojd.html

Verlauf / Chronik / History: (1) anzeigen

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

Ein Service von Reinhard Neidl - Webprogrammierung.

Calendar Funktionen

<<frenchtojd

jddayofweek>>

gregoriantojd

(PHP 4, PHP 5)

gregoriantojd Konvertierung vom Gregorianischen Kalender zum Julianischen Datum

Beschreibung

int gregoriantojd ( int $month , int $day , int $year )

Diese Funktion konvertiert das in month, day und year übergebene Datum im Gregorianischen Kalender in einen Tag im Julianischen Datum.

Gültige Daten liegen im Bereich von 4714 v. Chr. bis 9999 n. Chr. Der Gregorianische Kalender wurde allerdings erst am 15. Oktober 1582 (bzw. am 5. Oktober nach dem bis dahin gültigen Julianischen Kalender) von Papst Gregor XIII. eingeführt, in einigen Ländern erst sehr viel später. So übernahmen die Briten den Gregorianischen Kalender 1752, die UDSSR 1918 und Griechenland erst im Jahre 1923. In den meisten europäischen Ländern wurde vor dem Gregorianischen der Julianische Kalender benutzt.

Parameter-Liste

month

Der Monat als Zahl zwischen 1 (für Januar) und 12 (für Dezember)

day

Der Tag als Zahl zwischen 1 und 31

year

Das Jahr als Zahl zwischen -4714 und 9999

Rückgabewerte

Der Julianische Tag für das gegebene Gregorianische Datum als Integer.

Beispiele

Beispiel #1 Caledar Funktionen

<?php
$jd 
GregorianToJD(10111970);
echo 
"$jd\n";
$gregorian JDToGregorian($jd);
echo 
"$gregorian\n";
?>

Siehe auch

  • jdtogregorian() - Konvertierung vom Julianischen Datum zum Gregorianischen Kalender
  • cal_to_jd() - Converts from a supported calendar to Julian Day Count


5 BenutzerBeiträge:
- Beiträge aktualisieren...
brian at slaapkop dot net
10.05.2010 16:53
Some people might find it useful to use a function that takes in dates formatted by ISO8601 standards (yyyy-mm-dd):

<?php function daysBetweenDate($from, $till) {
/*
 *This function will calculate the difference between two given dates.
 *
 *Please input time by ISO 8601 standards (yyyy-mm-dd).
 *i.e: daysBetweenDate('2009-01-01', '2010-01-01');
 *This will return 365.
 *
 *Author: brian [at] slaapkop [dot] net
 *May 5th 2010
*/
   
if($till < $from) {
       
trigger_error("The date till is before the date from", E_USER_NOTICE);
        }
       
   
//Explode date since gregoriantojd() requires mm, dd, yyyy input;
       
$from = explode('-', $from);
       
$till = explode('-', $till);

   
//Calculate date to Julian Day Count with freshly created array $from.
       
$from = gregoriantojd($from[1], $from[2], $from[0])."<br />";
       
   
//Calculate date to Julian Day Count with freshly created array $till.
       
$till = gregoriantojd($till[1], $till[2], $till[0])."<br />";

   
//Substract the days $till (largest number) from $from (smallest number) to get the amount of days
       
$days = ($till - $from);
   
   
//Return the number of days.
       
return $days;

   
//Isn't it sad how my comments use more lines than the actual code?
}
?>
jfg
7.04.2009 22:19
If you need the same output as the g_date_get_julian function of the GlibC, here is my php implementation :

<?php
   
/**
     * Glib g_date_get_julian PHP implementation
     *
     * @param  $str  Date string in a format accepted by strtotime
     * @author jfg
     */
   
private function _get_julian( $str )
    {
       
$d = date_create($str);

        if(
$d == false )
            return
0;
       
       
$day_in_year = (int) date_format($d, "z");
       
$year        = (int) date_format($d, "Y") - 1;
       
$julian_days = $year * 365;
       
$julian_days += ($year >>= 2);
       
$julian_days -= ($year /= 25);
       
$julian_days += $year >> 2;
       
$julian_days += $day_in_year + 1;

        return
ceil($julian_days);
    }

?>
ryker at ridgex dot net
6.06.2006 17:27
<?php
/*
* ComputeDateDifference(...)
*   Description:
*     Calculates the difference between two dates.
*
*   Parameter:
*     $m0, $d0, $y0   => 1. Moth/Day/Year
*     $m1, $d1, $y1   => 2. Moth/Day/Year
*
*   Return:
*     Difference between given dates in days.
*
*   Autor:
*     06.06.2006 - Christian Meyer <ryker@ridgex.net>
*/
function ComputeDateDifference($m0,$d0,$y0,$m1,$d1,$y1)
{
 
$x0 = gregoriantojd($m0,$d0,$y0);
 
$x1 = gregoriantojd($m1,$d1,$y1); 
 
 
$diff = $x1 - $x0;
 
  if (
$diff < 0)
   
$diff *= -1; // abs
   
 
return $diff;   
}
?>
jettyrat at jettyfishing dot com
17.03.2005 22:34
You can obtain the decimal fraction of the Julian date with the php gregoriantojd() function or the function shown below by applying this code to the returned value.

<?php
  $julianDate
= gregoriantojd($month, $day, $year);

 
//correct for half-day offset
 
$dayfrac = date('G') / 24 - .5;
  if (
$dayfrac < 0) $dayfrac += 1;

 
//now set the fraction of a day
 
$frac = $dayfrac + (date('i') + date('s') / 60) / 60 / 24;

 
$julianDate = $julianDate + $frac;
?>
httpwebwitch
9.06.2004 1:04
This function also ignores decimal fractions in JD dates, and it uses non-standard format for returning the Gregorian date.

So, if your JD date is 2453056.28673, the Gregorian returned value is 2/20/2004, not "2004-02-20 23:45:36"

The decimal part is important, since the Julian day begins at noon, for example 2453056.49 is on Friday, 2453056.50 is on Saturday. Discarding the decimal part means that your returned Gregorian Date will be wrong 50% of the time.



PHP Powered Diese Seite bei php.net
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",...)