# GregorianToJD

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

GregorianToJD转变一个Gregorian历法日期到Julian Day计数

### 说明

gregoriantojd(int `\$month`, int `\$day`, int `\$year`): int

Gregorian历法的合理范围是4714 B.C. 至 9999 A.D.

`month`

`day`

`year`

### 范例

``` <?php\$jd = GregorianToJD(10, 11, 1970);echo "\$jd\n";\$gregorian = JDToGregorian(\$jd);echo "\$gregorian\n";?> ```

### 参见

• jdtogregorian() - 转变一个Julian Day计数为Gregorian历法日期
• cal_to_jd() - 从一个支持的历法转变为Julian Day计数。

``` 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; ?> ```
``` 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. ```
``` 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);    }?> ```