s=num>0x20, 0x60, 0x05, 0x00, // 2021-2030 0x30, 0xb0, 0x06, 0x00, 0x50, // 2031-2040 0x02, 0x07, 0x00, 0x50, 0x03 // 2041-2050 ); // 返回农历ilunaryear年的闰月月份,如没有则返回0 function getleapmonth(ilunaryear) { var leap = lunarleapyear[(ilunaryear - 2001) >> 1]; return (((ilunaryear - 2001) & 1) == 0) ? (leap >> 4) : (leap & 0x0f); } // 返回农历ilunaryer年ilunarmonth月的天数,结果是一个长整数 // 如果ilunarmonth不是闰月, 高字为0,低字为该月的天数 // 如果ilunarmonth是闰月, 高字为后一个月的天数,低字为前一个月的天数 function lunarmonthdays(ilunaryear, ilunarmonth) { var high; var low; var bit; high = 0; low = 29; bit = 16 - ilunarmonth; if ((ilunarmonth > getleapmonth(ilunaryear)) && (getleapmonth(ilunaryear) > 0)) bit--; if ((lunardaysofmonth[ilunaryear - 2001] & (1 << bit)) > 0) low++; if (ilunarmonth == getleapmonth(ilunaryear)) { high = ((lunardaysofmonth[ilunaryear - 2001] & (1 << (bit-1))) > 0) ? 30 : 29; } return low + (high << 16); } // 返回农历ilunaryear年的总天数 function lunaryeardays(ilunaryear) { var days; var tmp; days = 0; for (var i=1; i <= 12; i++) { tmp = lunarmonthdays(ilunaryear, i); days = days + ((tmp >> 16) & 0xffff); //取高位 days = days + (tmp & 0xffff); //取低位 } return days; } // 将农历ilunaryear年格式化成天干地支记年法表示的字符串 function formatlunaryear(ilunaryear) { var sztext1 = new string("甲乙丙丁戊己庚辛壬癸"); var sztext2 = new string("子丑寅卯辰巳午未申酉戌亥"); var stryear; stryear = sztext1.substr((ilunaryear - 4) % 10, 1); stryear = stryear + sztext2.substr((ilunaryear - 4) % 12, 1); return stryear + "年"; } // 将农历ilunarmonth月格式化成农历表示的字符串 function formatlunarmonth(ilunarmonth) { var sztext = new string("正二三四五六七八九十"); var strmonth; if (ilunarmonth <= 10) { strmonth = sztext.substr(ilunarmonth - 1, 1); } else if (ilunarmonth == 11) strmonth = "十一"; else strmonth = "十二"; return strmonth + "月"; } // 将农历ilunarday日格式化成农历表示的字符串 function formatlunarday(ilunarday) { var sztext1 = new string("初十廿三"); var sztext2 = new string("一二三四五六七八九十"); var strday; if ((ilunarday != 20) && (ilunarday != 30)) { strday = sztext1