如何在PHP中将Hijri日期转换为格里高利?

时间:2015-07-01 09:20:09

标签: php date

我想把这个日期: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。 有人有任何想法??

2 个答案:

答案 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