我想把这个日期:09/13/1436(这是Hijiri)改为2015-06-30(格里高利)。 我试过了:
function HijriToJD($m, $d, $y){
return (int)((11 * $y + 3) / 30) + 354 * $y +
30 * $m - (int)(($m - 1) / 2) + $d + 1948440 - 385;
}
$date = HijriToJD(09, 13, 1436);
echo jdtogregorian($date);
当我编译时,我得到了10/7/2014。 有人有任何想法??
答案 0 :(得分:5)
将09
作为月份传递是问题....在PHP中,leading zero的数字被视为八进制。 09
是无效的八进制,因此它被视为0
。
调用
$r=HijriToJD(9, 13, 1436);
(没有月份的前导零)应该给你一个正确的结果
答案 1 :(得分:0)
更加准确
return floor((11 * $year + 3) / 30) + floor(354 * $year) + floor(30 * $month)
- floor(($month - 1) / 2) + $day + 1948440 - 386;
您可以使用地板代替int
https://github.com/OpenSID/OpenSID/blob/master/donjo-app/libraries/Date_conv.php#L44