public function convertJdToGregorian($jd)
{
// Special case mapping 0 -> 0/0/0
if ($jd == 0) {
return array(0, 0, 0);
}
$l = $jd + 68569;
$n = floor(4 * $l / 146097);
$l = $l - floor((146097 * $n + 3) / 4);
$i = floor(4000 * ($l + 1) / 1461001);
$l = $l - floor(1461 * $i / 4) + 31;
$j = floor(80 * $l / 2447);
$d = $l - floor(2447 * $j / 80);
$l = floor($j / 11);
$m = $j + 2 - 12 * $l;
$y = 100 * ($n - 49) + $i + $l;
return array($y, $m, $d);
}