php gregoriantojd() 和 jdtogregorian() 函数除了 httpwebwitch 提到的限制外,也没有考虑“天文”计算系统 - 即使用公元零年,而不是像基督教公元系统那样直接从公元前 1 年到公元 1 年。
这些函数可用于包装 php 内置函数以返回符合 ISO 8601 的日期
<?php
function ISO8601toJD($ceDate) {
list($day, $month, $year) = array_map('strrev',explode('-', strrev($ceDate), 3));
if ($year <= 0) $year--;
return gregoriantojd($month, $day, $year);
}
function JDtoISO8601($JD) {
if ($JD <= 1721425) $JD += 365;
list($month, $day, $year) = explode('/', jdtogregorian($JD));
return sprintf('%+05d-%02d-%02d', $year, $month, $day);
}
?>