<!--
var bsYear
var bsDate
var bsWeek
var arrLen=8//数组长度
var sValue=0//当年的秒数
var dayiy=0//当年第几天
var miy=0//月份的下标
var iyear=0//年份标记
var dayim=0//当月第几天
var spd=86400//每天的秒数
var year1999="302929302929302930303029"//354
var year2000="303029293029293029303029"//354
var year2001="30302930293029293029302930"//384
var year2002="303029302930292930293029"//354
var year2003="303029303029302929302930"//355
var year2004="29302930302930293029302930"//384
var year2005="293029302930302930293029"//354
var year2006="30293029303029293030292930"
var month1999="正月二月三月四月五月六月七月八月九月十月十一月十二月"
var month2001="正月二月三月四月闰四月五月六月七月八月九月十月十一月十二月"
var month2004="正月二月闰二月三月四月五月六月七月八月九月十月十一月十二月"
var month2006="正月二月三月四月五月六月七月闰七月八月九月十月十一月十二月"
var Dn="初一初二初三初四初五初六初七初八初九初十十一十二十三十四十五十六十七十八十九二十廿一廿二廿三廿四廿五廿六廿七廿八廿九三十"
var Ys=new Array(arrLen)
Ys[0]=919094400Ys[1]=949680000Ys[2]=980265600
Ys[3]=1013443200Ys[4]=1044028800Ys[5]=1074700800
Ys[6]=1107878400Ys[7]=1138464000
var Yn=new Array(arrLen)//农历年的名称
Yn[0]="己卯年"Yn[1]="庚辰年"Yn[2]="辛巳年"
Yn[3]="壬午年"Yn[4]="癸未年"Yn[5]="甲申年"
Yn[6]="乙酉年"Yn[7]="丙戌年"
var D=new Date()
var yy=D.getYear()
var mm=D.getMonth()+1
var dd=D.getDate()
var ww=D.getDay()
if (ww==0) ww="<font color=RED>星期日"
if (ww==1) ww="星期一"
if (ww==2) ww="星期二"
if (ww==3) ww="星期三"
if (ww==4) ww="星期四"
if (ww==5) ww="星期五"
if (ww==6) ww="<font color=RED>星期六"
ww=ww
var ss=parseInt(D.getTime() / 1000)
if (yy<100) yy="19"+yy
for (I=0I<arrLenI++)
if (ss>=Ys[I])...{
iyear=I
sValue=ss-Ys[I]//当年的秒数
}
dayiy=parseInt(sValue/spd)+1//当年的天数
var dpm=year1999
if (iyear==1) dpm=year2000
if (iyear==2) dpm=year2001
if (iyear==3) dpm=year2002
if (iyear==4) dpm=year2003
if (iyear==5) dpm=year2004
if (iyear==6) dpm=year2005
if (iyear==7) dpm=year2006
dpm=dpm.split("")
var Mn=month1999
if (iyear==2) Mn=month2001
if (iyear==5) Mn=month2004
if (iyear==7) Mn=month2006
Mn=Mn.split("")
var Dn="初一初二初三初四初五初六初七初八初九初十十一十二十三十四十五十六十七十八十九二十廿一廿二廿三廿四廿五廿六廿七廿八廿九三十"
Dn=Dn.split("")
dayim=dayiy
var total=new Array(13)
total[0]=parseInt(dpm[0])
for (I=1I<dpm.length-1I++) total[I]=parseInt(dpm[I])+total[I-1]
for (I=dpm.length-1I>0I--)
if (dayim>total[I-1])...{
dayim=dayim-total[I-1]
miy=I
}
bsWeek=ww
bsDate=yy+"年"+mm+"月"
bsDate2=dd
bsYear="农历"+Yn[iyear]
bsYear2=Mn[miy]+Dn[dayim-1]
if (ss>=Ys[7]||ss<Ys[0]) bsYear=Yn[7]
function CAL(){
document.write("<table border='1' cellspacing='3' width='90' bordercolor='#000000' bgcolor='#FFFFFF' height='110' cellpadding='2'")
document.write("<tr><td align='center'><b><font color=#008040>"+bsDate+"</font><br><font face='Arial' size='6' color=#FF8040>"+bsDate2+"</font><br><font color=#008040><span style='FONT-SIZE: 10.5pt'>")
document.write(bsWeek+"</span><br>"+"<br></b><font color=#9B4E00>")
document.write(bsYear+"<br>"+bsYear2+"</td></tr></table>")
}
//-->
</script>
<script language="javascript">CAL()</script>
其实我也不懂这个算法,网上粘贴的,我觉得可以不去深究这个公式,反正有现成代码:
设:公元年数-1977(或1901)=4Q+R
则:阴历日期=14Q+10.6(R+1)+年内日期序数-29.5n
(注:式中Q、R、n均为自然数,R<4)
例:1994年5月7日的阴历日期为:
1994-1977=17=4×4+1
故:Q=4,R=1 则:5月7日的阴历日期为:
14×4+10.6(1+1)+(31+28+31+30+7)-29.5n
=204.2- 29.5n
然后用29.5去除204.2得商数6......27.2,6即是n值,余数27即是阴历二十七日。
你指的是阴历吧?阴历这样算,需要一个字典表:
var lunarLeapMonthOfYear=function(year){var table=[
0x04bd8,0x04ae0,0x0a570,0x054d5,0x0d260,0x0d950,0x16554,0x056a0,0x09ad0,
0x055d2,0x04ae0,0x0a5b6,0x0a4d0,0x0d250,0x1d255,0x0b540,0x0d6a0,0x0ada2,
0x095b0,0x14977,0x04970,0x0a4b0,0x0b4b5,0x06a50,0x06d40,0x1ab54,0x02b60,
0x09570,0x052f2,0x04970,0x06566,0x0d4a0,0x0ea50,0x06e95,0x05ad0,0x02b60,
0x186e3,0x092e0,0x1c8d7,0x0c950,0x0d4a0,0x1d8a6,0x0b550,0x056a0,0x1a5b4,
0x025d0,0x092d0,0x0d2b2,0x0a950,0x0b557,0x06ca0,0x0b550,0x15355,0x04da0,
0x0a5d0,0x14573,0x052d0,0x0a9a8,0x0e950,0x06aa0,0x0aea6,0x0ab50,0x04b60,
0x0aae4,0x0a570,0x05260,0x0f263,0x0d950,0x05b57,0x056a0,0x096d0,0x04dd5,
0x04ad0,0x0a4d0,0x0d4d4,0x0d250,0x0d558,0x0b540,0x0b5a0,0x195a6,0x095b0,
0x049b0,0x0a974,0x0a4b0,0x0b27a,0x06a50,0x06d40,0x0af46,0x0ab60,0x09570,
0x04af5,0x04970,0x064b0,0x074a3,0x0ea50,0x06b58,0x055c0,0x0ab60,0x096d5,
0x092e0,0x0c960,0x0d954,0x0d4a0,0x0da50,0x07552,0x056a0,0x0abb7,0x025d0,
0x092d0,0x0cab5,0x0a950,0x0b4a0,0x0baa4,0x0ad50,0x055d9,0x04ba0,0x0a5b0,
0x15176,0x052b0,0x0a930,0x07954,0x06aa0,0x0ad50,0x05b52,0x04b60,0x0a6e6,
0x0a4e0,0x0d260,0x0ea65,0x0d530,0x05aa0,0x076a3,0x096d0,0x04bd7,0x04ad0,
0x0a4d0,0x1d0b6,0x0d250,0x0d520,0x0dd45,0x0b5a0,0x056d0,0x055b2,0x049b0,
0x0a577,0x0a4b0,0x0aa50,0x1b255,0x06d20,0x0ada0
]
return table[year-1900]&0xf
}
lunarLeapMonthOfYear(2004)//2004年阴历闰二月
lunarLeapMonthOfYear(2000)//2000年阴历闰四月
lunarLeapMonthOfYear(2001)//2001年没有闰月