php gregoriantojd() 和 jdtogregorian() 函数除了 httpwebwitch 提到的限制外,没有考虑“天文”系统 - 即使用公元 0 年,而不是像基督教纪年系统那样直接从公元前 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);
}
?>