日期计算
**/
//====================================== 传回农历 y 年的总天数
function lYearDays(y) {
var i, sum = 348;
for(i=0x8000; i>0x8; i>>=1) sum += (lunarInfo[y-1900] & i)? 1: 0;
return(sum+leapDays(y));
}
//====================================== 传回农历 y 年闰月的天数
function leapDays(y) {
if(leapMonth(y)) return((lunarInfo[y-1900] & 0x10000)? 30: 29);
else return(0);
}
//====================================== 传回农历 y 年闰哪个月
1-12 , 没闰传回 0
function leapMonth(y) {
return(lunarInfo[y-1900] & 0xf);
}
//====================================== 传回农历 y 年 m 月的总天
数
function monthDays(y,m) {
return( (lunarInfo[y-1900] & (0x10000>>m))? 30: 29 );
}
//====================================== 算出农历, 传入日期物件,
传回农历日期物件
// 该 物 件 属 性
有 .year .month .day .isLeap
function Lunar(objDate) {
var i, leap=0, temp=0;
var offset =
(Date.UTC(objDate.getFullYear(),objDate.getMonth(),objDate.getDate()) -
Date.UTC(1900,0,31))/86400000;
for(i=1900; i<2050 && offset>0; i++) { temp=lYearDays(i); offset-=temp; }
if(offset<0) { offset+=temp; i–; }