【问题标题】:How to convert a Julian day (not date) and Gregorian year to a Gregorian date with PHP?如何使用 PHP 将儒略日(不是日期)和公历年转换为公历日期?
【发布时间】:2012-08-25 08:09:03
【问题描述】:

这是一个从儒略日期到公历日期的 PHP 示例:

$jd = gregoriantojd(10,3,1975);
echo($jd . "<br />");

$gregorian = jdtogregorian($jd);
echo($gregorian);

Output:
2442689
10/3/1975

如果您有完整的儒略日,这可以工作,但如果您只有像“254”这样的儒略日和“2012”年怎么办?如何使用 PHP 仅使用儒略日和公历年份来确定公历日期?

这是儒略日的图表:

http://landweb.nascom.nasa.gov/browse/calendar.html

PHP 可以做到这一点吗?

编辑:根据答案,这就是我想出的,尽管可能有更简单的方法:

$JulianDay = 77;
$Year = 1977;
$DateYear = date("Y/m/d", mktime(0, 0, 0, 1, 1, $Year));
$GregDate = new DateTime($DateYear);
$GregDate->modify("+$JulianDay day");
$Date = $GregDate->format('Y/m/d');
echo $Date; // '1977/03/19'

【问题讨论】:

    标签: php date gregorian-calendar julian-date


    【解决方案1】:
    echo jdtogregorian(gregoriantojd(01, 01, 2012)+253);
    

    如果 2012 年的 254 是 9 月 10 日(从您的链接看来是这样),它工作正常。

    【讨论】:

    • 由于某种原因,它被关闭了一天......但无法弄清楚为什么。谢谢,虽然这帮助我摆脱困境。
    • 我的代码为给定年份的一月一日生成儒略日期。由于一月的第一天在朱利安中始终是 1,因此您必须在加法之前从朱利安日减去 1 才能得到正确的结果。我很高兴能帮上忙;你可以接受我的回答来表达你的感激之情;)
    【解决方案2】:
    $date = strtotime('+'.YourDay.' days', mktime(0, 0, 0, 0, 0, YourYear));
    

    strtotime 是一个不可思议的功能

    【讨论】:

    • 由于某种原因已关闭...无法弄清楚原因,但可能是用户错误。还是谢谢!
    【解决方案3】:

    你可以在 php 中使用下面的函数来做同样的事情。

    function d2julian($indate) {
        $year = ltrim(date('y', $indate),'0');     /* Year part with leading zeroes stripped    */
        if ($year == 0) $outdate = '00';
        else if ($year < 10) $outdate = '0' . $year;
        else $outdate = $year;
    
        $day = ltrim(date('z',$indate)+1,'0');    /* Day with leading zeroes stripped            */
        if ($day < 10) $outdate .= '00' . $day;
        else if ($day < 100) $outdate .= '0' . $day;
        else $outdate .= $day;
    
        return $outdate;
    }
    

    希望这会有所帮助。如果您有任何问题,请告诉我。

    【讨论】:

      猜你喜欢
      • 2013-07-21
      • 1970-01-01
      • 2012-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-20
      相关资源
      最近更新 更多