本文最后修改于 311 天前,部分内容可能已经过时!
源文件(解压缩即可)
PHP日期操作类代码-农历-阳历转换.zip
前段时间写了一个生日倒计时的小程序,然后发现,它不准,然后排查了一下原因发现是闰月没有计算到位,最后发现闰月无法正常显示的问题出现在getDaysBetweenLunar()这个函数对相隔天数的计算上,虽然对闰月情况进行了考虑,但是在这里没有进行调用,那么解决方法当然很简单,就是把它给加上去
闰月正常显示解决方法
在for循环前,判断月份是否需要加1
$leapMonth = $this->getLeapMonths($year); //调用getLeapMonths判断是否有闰月
if($leapMonth!==0 && $month>$leapMonth) $month ++;
代码如下,可以对照参考
/**
* 计算阴历日期与正月初一相隔的天数
* @param year
* @param month
* @param date
*/
function getDaysBetweenLunar($year,$month,$date)
{
$yearMonth = $this->getLunarMonths($year); //当年的每个月天数
$leapMonth = $this->getLeapMonths($year); //判断是否有闰月
if($leapMonth!==0 && $month>$leapMonth) $month ++;//判断是否有存在闰月,如果有的话则++
$res=0;
for($i=1;$i<$month;$i++) $res +=$yearMonth[$i-1];
$res+=$date-1;
return $res;
}
该页面评论已关闭