复制代码 代码如下:
<HTML>
<HEAD>
<TITLE>农历与西历对照</TITLE>
<META
content="农历;阳历;月历;节日;时区;节气;八字;干支;生肖;gregoriansolar;chineselunar;calendar;"
name=keywords>
<METAcontent=Allname=robots>
<METAcontent="gregoriansolarcalendarandchineselunarcalendar"
name=description>
<METAcontent="text/html;charset=gb2312"http-equiv=Content-Type>
<SCRIPTlanguage=JavaScript>
functionclick(){
if(event.button==2){alert('版权所有')}}
document.onmousedown=click
</SCRIPT>
<SCRIPTlanguage=JavaScript>
<;
this.monCyl-=12
}
this.year=i
this.yearCyl=i-1864
leap=leapMonth(i)//闰哪个月
this.isLeap=false
for(i=1;i<13&&offset>0;i++){
//闰月
if(leap>0&&i==(leap+1)&&this.isLeap==false)
{--i;this.isLeap=true;temp=leapDays(this.year);}
else
{temp=monthDays(this.year,i);}
//解除闰月
if(this.isLeap==true&&i==(leap+1))this.isLeap=false
offset-=temp
if(this.isLeap==false)this.monCyl++
}
if(offset==0&&leap>0&&i==leap+1)
if(this.isLeap)
{this.isLeap=false;}
else
{this.isLeap=true;--i;--this.monCyl;}
if(offset<0){offset+=temp;--i;--this.monCyl;}
this.month=i
this.day=offset+1
}
//==============================传回国历y年某m+1月的天数
functionsolarDays(y,m){
if(m==1)
return(((y%4==0)&&(y%100!=0)||(y%400==0))?29:28)
else
return(solarMonth[m])
}
//==============================传入offset传回干支,0=甲子
functioncyclical(num){
return(Gan[num%10]+Zhi[num%12])
}
//==============================月历属性
functioncalElement(sYear,sMonth,sDay,week,lYear,lMonth,lDay,isLeap,cYear,cMonth,cDay){
this.isToday=false;
//国历
this.sYear=sYear;
this.sMonth=sMonth;
this.sDay=sDay;
this.week=week;
//农历
this.lYear=lYear;
this.lMonth=lMonth;
this.lDay=lDay;
this.isLeap=isLeap;
//干支
this.cYear=cYear;
this.cMonth=cMonth;
this.cDay=cDay;
this.color='';
this.lunarFestival='';//农历节日
this.solarFestival='';//国历节日
this.solarTerms='';//节气
}
//=====某年的第n个节气为几日(从0小寒起算)
functionsTerm(y,n){
varoffDate=newDate((31556925974.7*(y-1900)+sTermInfo[n]*60000)+Date.UTC(1900,0,6,2,5))
return(offDate.getUTCDate())
}
//==============================传回月历物件(y年,m+1月)
functioncalendar(y,m){
varsDObj,lDObj,lY,lM,lD=1,lL,lX=0,tmp1,tmp2
varlDPOS=newArray(3)
varn=0
varfirstLM=0
sDObj=newDate(y,m,1)//当月一日日期
this.length=solarDays(y,m)//国历当月天数
this.firstWeek=sDObj.getDay()//国历当月1日星期几
for(vari=0;i<this.length;i++){
if(lD>lX){
sDObj=newDate(y,m,i+1)//当月一日日期
lDObj=newLunar(sDObj)//农历
lY=lDObj.year//农历年
lM=lDObj.month//农历月
lD=lDObj.day//农历日
lL=lDObj.isLeap//农历是否闰月
lX=lL?leapDays(lY):monthDays(lY,lM)//农历当月最後一天
if(n==0)firstLM=lM
lDPOS[n++]=i-lD+1
}
//sYear,sMonth,sDay,week,
//lYear,lMonth,lDay,isLeap,
//cYear,cMonth,cDay
this[i]=newcalElement(y,m+1,i+1,nStr1[(i+this.firstWeek)%7],
lY,lM,lD++,lL,
cyclical(lDObj.yearCyl),cyclical(lDObj.monCyl),cyclical(lDObj.dayCyl++))
if((i+this.firstWeek)%7==0)this[i].color='red'//周日颜色
if((i+this.firstWeek)%14==13)this[i].color='red'//周休二日颜色
}
//节气
tmp1=sTerm(y,m*2)-1
tmp2=sTerm(y,m*2+1)-1
this[tmp1].solarTerms=solarTerm[m*2]
this[tmp2].solarTerms=solarTerm[m*2+1]
if(m==3)this[tmp1].color='red'//清明颜色
//国历节日
for(iinsFtv)
if(sFtv[i].match(/^(d{2})(d{2})([s*])(.+)$/))
if(Number(RegExp.$1)==(m+1)){
this[Number(RegExp.$2)-1].solarFestival+=RegExp.$4+''
if(RegExp.$3=='*')this[Number(RegExp.$2)-1].color='red'
}
//月周节日
for(iinwFtv)
if(wFtv[i].match(/^(d{2})(d)(d)([s*])(.+)$/))
if(Number(RegExp.$1)==(m+1)){
tmp1=Number(RegExp.$2)
tmp2=Number(RegExp.$3)
this[((this.firstWeek>tmp2)?7:0)+7*(tmp1-1)+tmp2-this.firstWeek].solarFestival+=RegExp.$5+''
}
//农历节日
for(iinlFtv)
if(lFtv[i].match(/^(d{2})(.{2})([s*])(.+)$/)){
tmp1=Number(RegExp.$1)-firstLM
if(tmp1==-11)tmp1=1
if(tmp1>=0&&tmp1<n){
tmp2=lDPOS[tmp1]+Number(RegExp.$2)-1
if(tmp2>=0&&tmp2<this.length){
this[tmp2].lunarFestival+=RegExp.$4+''
if(RegExp.$3=='*')this[tmp2].color='red'
}
}
}
//黑色星期五
if((this.firstWeek+12)%7==5)
this[12].solarFestival+='黑色星期五'
//今日
if(y==tY&&m==tM)this[tD-1].isToday=true;
}
//======================中文日期
functioncDay(d){
vars;
switch(d){
case10:
s='初十';break;
case20:
s='二十';break;
break;
case30:
s='三十';break;
break;
default:
s=nStr2[Math.floor(d/10)];
s+=nStr1[d%10];
}
return(s);
}
///////////////////////////////////////////////////////////////////////////////
varcld;
functiondrawCld(SY,SM){
vari,sD,s,size;
cld=newcalendar(SY,SM);
if(SY>1874&&SY<1909)yDisplay='光绪'+(((SY-1874)==1)?'元':SY-1874)
if(SY>1908&&SY<1912)yDisplay='宣统'+(((SY-1908)==1)?'元':SY-1908)
if(SY>1911&&SY<1950)yDisplay='民国'+(((SY-1911)==1)?'元':SY-1911)
if(SY>1949)yDisplay='共和国'+(((SY-1949)==1)?'元':SY-1949)
GZ.innerHTML=yDisplay+'年农历'+cyclical(SY-1900+36)+'年【'+Animals[(SY-4)%12]+'】';
YMBG.innerHTML=""+SY+"<BR>"+monthName[SM];
for(i=0;i<42;i++){
sObj=eval('SD'+i);
lObj=eval('LD'+i);
sObj.className='';
sD=i-cld.firstWeek;
if(sD>-1&&sD<cld.length){//日期内
sObj.innerHTML=sD+1;
if(cld[sD].isToday)sObj.className='todyaColor';//今日颜色
sObj.style.color=cld[sD].color;//国定假日颜色
if(cld[sD].lDay==1)//显示农历月
lObj.innerHTML='<b>'+(cld[sD].isLeap?'闰':'')+cld[sD].lMonth+'月'+(monthDays(cld[sD].lYear,cld[sD].lMonth)==29?'小':'大')+'</b>';
else//显示农历日
lObj.innerHTML=cDay(cld[sD].lDay);
s=cld[sD].lunarFestival;
if(s.length>0){//农历节日
if(s.length>6)s=s.substr(0,4)+'…';
s=s.fontcolor('red');
}
else{//国历节日
s=cld[sD].solarFestival;
if(s.length>0){
size=(s.charCodeAt(0)>0&&s.charCodeAt(0)<128)?8:4;
if(s.length>size+2)s=s.substr(0,size)+'…';
s=s.fontcolor('blue');
}
else{//廿四节气
s=cld[sD].solarTerms;
if(s.length>0)s=s.fontcolor('limegreen');
}
}
if(s.length>0)lObj.innerHTML=s;
}
else{//非日期
sObj.innerHTML='';
lObj.innerHTML='';
}
}
}
functionchangeCld(){
vary,m;
y=CLD.SY.selectedIndex+1900;
m=CLD.SM.selectedIndex;
drawCld(y,m);
}
functionpushBtm(K){
switch(K){
case'YU':
if(CLD.SY.selectedIndex>0)CLD.SY.selectedIndex--;
break;
case'YD':
if(CLD.SY.selectedIndex<149)CLD.SY.selectedIndex++;
break;
case'MU':
if(CLD.SM.selectedIndex>0){
CLD.SM.selectedIndex--;
}
else{
CLD.SM.selectedIndex=11;
if(CLD.SY.selectedIndex>0)CLD.SY.selectedIndex--;
}
break;
case'MD':
if(CLD.SM.selectedIndex<11){
CLD.SM.selectedIndex++;
}
else{
CLD.SM.selectedIndex=0;
if(CLD.SY.selectedIndex<149)CLD.SY.selectedIndex++;
}
break;
default:
CLD.SY.selectedIndex=tY-1900;
CLD.SM.selectedIndex=tM;
}
changeCld();
}
varToday=newDate();
vartY=Today.getFullYear();
vartM=Today.getMonth();
vartD=Today.getDate();
//////////////////////////////////////////////////////////////////////////////
varwidth="130";
varoffsetx=2;
varoffsety=16;
varx=0;
vary=0;
varsnow=0;
varsw=0;
varcnt=0;
vardStyle;
document.onmousemove=mEvn;
//显示详细日期资料
functionmOvr(v){
vars,festival;
varsObj=eval('SD'+v);
vard=sObj.innerHTML-1;
//sYear,sMonth,sDay,week,
//lYear,lMonth,lDay,isLeap,
//cYear,cMonth,cDay
if(sObj.innerHTML!=''){
sObj.style.cursor='s-resize';
if(cld[d].solarTerms==''&&cld[d].solarFestival==''&&cld[d].lunarFestival=='')
festival='';
else
festival='<TABLEWIDTH=100%BORDER=0CELLPADDING=2CELLSPACING=0BGCOLOR="#CCFFCC"><TR><TD>'+
'<FONTCOLOR="#000000"STYLE="font-size:9pt;">'+cld[d].solarTerms+''+cld[d].solarFestival+''+cld[d].lunarFestival+'</FONT></TD>'+
'</TR></TABLE>';
s='<TABLEWIDTH="130"BORDER=0CELLPADDING="2"CELLSPACING=0BGCOLOR="#000066"><TR><TD>'+
'<TABLEWIDTH=100%BORDER=0CELLPADDING=0CELLSPACING=0><TR><TDALIGN="right"><FONTCOLOR="#ffffff"STYLE="font-size:9pt;">'+
cld[d].sYear+'年'+cld[d].sMonth+'月'+cld[d].sDay+'日<br>星期'+cld[d].week+'<br>'+
'<fontcolor="violet">农历'+(cld[d].isLeap?'闰':'')+cld[d].lMonth+'月'+cld[d].lDay+'日</font><br>'+
'<fontcolor="yellow">'+cld[d].cYear+'年'+cld[d].cMonth+'月'+cld[d].cDay+'日</font>'+
'</FONT></TD></TR></TABLE>'+festival+'</TD></TR></TABLE>';
document.all["detail"].innerHTML=s;
if(snow==0){
dStyle.left=x+offsetx-(width/2);
dStyle.top=y+offsety;
dStyle.visibility="visible";
snow=1;
}
}
}
//清除详细日期资料
functionmOut(){
if(cnt>=1){sw=0}
if(sw==0){snow=0;dStyle.visibility="hidden";}
elsecnt++;
}
//取得位置
functionmEvn(){
x=event.x;
y=event.y;
if(document.body.scrollLeft)
{x=event.x+document.body.scrollLeft;y=event.y+document.body.scrollTop;}
if(snow){
dStyle.left=x+offsetx-(width/2)
dStyle.top=y+offsety
}
}
///////////////////////////////////////////////////////////////////////////
functionchangeTZ(){
CITY.innerHTML=CLD.TZ.value.substr(6)
setCookie("TZ",CLD.TZ.selectedIndex)
}
functiontick(){
vartoday
today=newDate()
Clock.innerHTML=today.toLocaleString().replace(/(年|月)/g,"/").replace(/日/,"");
Clock.innerHTML=TimeAdd(today.toGMTString(),CLD.TZ.value)
window.setTimeout("tick()",1000);
}
functionsetCookie(name,value){
vartoday=newDate()
varexpires=newDate()
expires.setTime(today.getTime()+1000*60*60*24*365)
document.cookie=name+"="+escape(value)+";expires="+expires.toGMTString()
}
functiongetCookie(Name){
varsearch=Name+"="
if(document.cookie.length>0){
offset=document.cookie.indexOf(search)
if(offset!=-1){
offset+=search.length
end=document.cookie.indexOf(";",offset)
if(end==-1)end=document.cookie.length
returnunescape(document.cookie.substring(offset,end))
}
elsereturn""
}
}
/////////////////////////////////////////////////////////
functioninitial(){
dStyle=detail.style;
CLD.SY.selectedIndex=tY-1900;
CLD.SM.selectedIndex=tM;
drawCld(tY,tM);
CLD.TZ.selectedIndex=getCookie("TZ");
changeTZ();
tick();
}
//-->
</SCRIPT>
<SCRIPTlanguage=VBScript>
<>
</SCRIPT>
<STYLE>.todyaColor{
BACKGROUND-COLOR:aqua
}
</STYLE>
<METAcontent="MicrosoftFrontPage4.0"name=GENERATOR></HEAD>
<BODYonload=initial()>
<br>
<SCRIPTlanguage=JavaScript><></SCRIPT>
<DIVid=detailstyle="POSITION:absolute"></DIV>
<CENTER>
<FORMname=CLD>
<TABLE>
<TBODY>
<TR>
<TDalign=middlevAlign=top><fontsize=3color=#ff6633><scriptlanguage="JavaScript">
varenabled=0;today=newDate();
varday;vardate;
if(today.getDay()==0)day="星期日"
if(today.getDay()==1)day="星期一"
if(today.getDay()==2)day="星期二"
if(today.getDay()==3)day="星期三"
if(today.getDay()==4)day="星期四"
if(today.getDay()==5)day="星期五"
if(today.getDay()==6)day="星期六"
document.fgColor="000000";
date="佛历"+(today.getYear()+544)+"年"+
(today.getMonth()+1)+"月"+today.getDate()+"日"+
day+"";
document.write(date)
</script></font><BR><FONTsize=2
style="FONT-SIZE:9pt">本地时间:</FONT><BR><FONTcolor=#000080face=Arial
id=Clocksize=4align="center"></FONT>
<P><><FONTsize=2style="FONT-SIZE:9pt"><SELECT
name=TZonchange=changeTZ()style="FONT-SIZE:9pt"><OPTIONselected
value="-1200安尼威土克、瓜甲兰">国际换日线<OPTIONvalue="-1100中途岛、萨摩亚群岛">萨摩亚<OPTION
value="-1000夏威夷">夏威夷<OPTIONvalue=-0900*阿拉斯加>阿拉斯加<OPTION
value=-0800*太平洋时间(美加)、提亚纳>太平洋<OPTIONvalue="-0700亚历桑那">美国山区<OPTION
value=-0700*山区时间(美加)>美加山区<OPTIONvalue=-0600*萨克其万(加拿大)>加拿大中部<OPTION
value=-0600*墨西哥市、塔克西卡帕>墨西哥<OPTIONvalue=-0600*中部时间(美加)>美加中部<OPTION
value=-0500*波哥大、里玛>南美洲太平洋<OPTIONvalue=-0500*东部时间(美加)>美加东部<OPTION
value=-0500*印第安纳(东部)>美东<OPTIONvalue=-0400*加拉卡斯、拉帕兹>南美洲西部<OPTION
value="-0400*大西洋时间加拿大)">大西洋<OPTIONvalue="-0330新岛(加拿大东岸)">纽芬兰<OPTION
value="-0300波西尼亚">东南美洲<OPTIONvalue="-0300布鲁诺斯爱丽斯、乔治城">南美洲东部<OPTION
value=-0200*大西洋中部>大西洋中部<OPTIONvalue=-0100*亚速尔群岛、维德角群岛>亚速尔<OPTION
value="+0000格林威治时间、都柏林、爱丁堡、伦敦">英国夏令<OPTION
value="+0000莫洛维亚(赖比瑞亚)、卡萨布兰卡">格林威治标准<OPTION
value="+0100巴黎、马德里">罗马<OPTIONvalue="+0100布拉格,华沙,布达佩斯">中欧<OPTION
value="+0100柏林、斯德哥尔摩、罗马、伯恩、布鲁赛尔、维也纳">西欧<OPTION
value="+0200以色列">以色列<OPTIONvalue=+0200*东欧>东欧<OPTION
value=+0200*开罗>埃及<OPTIONvalue=+0200*雅典、赫尔辛基、伊斯坦堡>GFT<OPTION
value=+0200*赫拉雷、皮托里>南非<OPTION
value=+0300*巴格达、科威特、奈洛比(肯亚)、里雅德(沙乌地)>沙乌地阿拉伯<OPTION
value=+0300*莫斯科、圣彼得堡、贺占、窝瓦格瑞德>俄罗斯<OPTIONvalue=+0330*德黑兰>伊朗<OPTION
value=+0400*阿布达比(东阿拉伯)、莫斯凯、塔布理斯(乔治亚共和)>阿拉伯<OPTION
value=+0430*喀布尔>阿富汗<OPTIONvalue="+0500伊斯兰马巴德、克洛奇、伊卡特林堡、塔须肯">西亚<OPTION
value="+0530孟买、加尔各答、马垂斯、新德里、可伦坡">印度<OPTION
value="+0600阿马提、达卡">中亚<OPTIONvalue="+0700曼谷、亚加达、胡志明市">曼谷<OPTION
value="+0800北京、重庆、黑龙江">中国<OPTIONvalue="+0800台湾、香港、新加坡">台北<OPTION
value="+0900东京、大阪、扎幌、汉城、亚库兹(东西伯利亚)">东京<OPTION
value="+0930达尔文">澳洲中部<OPTIONvalue="+1000布里斯本、墨尔本、席德尼">席德尼<OPTION
value="+1000霍巴特">塔斯梅尼亚<OPTIONvalue="+1000关岛、莫斯比港、海威">西太平洋<OPTION
value=+1100*马哥大、所罗门群岛、新卡伦多尼亚>太平洋中部<OPTION
value="+1200威灵顿、奥克兰">纽西兰<OPTION
value="+1200斐济、肯加塔、马歇尔群岛">斐济</OPTION></SELECT>时间</FONT><FONTid=tSave
style="COLOR:red;FONT-FAMILY:Wingdings;FONT-SIZE:18pt"></FONT><BR><BR><FONT
style="COLOR:green;FONT-FAMILY:Webdings;FONT-SIZE:120pt">û</FONT><BR><FONT
id=CITY
style="COLOR:blue;FONT-FAMILY:'宋体';FONT-SIZE:9pt;WIDTH:150px"></FONT></P></TD>
<TDalign=middle>
<DIVstyle="POSITION:absolute;TOP:30px;Z-INDEX:-1"><FONTid=YMBG
style="COLOR:#f0f0f0;FONT-FAMILY:'ArialBlack';FONT-SIZE:100pt">0000<BR>JUN</FONT>
</DIV>
<TABLEborder=0>
<TBODY>
<TR>
<TDbgColor=#000080colSpan=7><FONTcolor=#ffffffsize=2
style="FONT-SIZE:9pt">西历<SELECTname=SYonchange=changeCld()
style="FONT-SIZE:9pt">
<SCRIPTlanguage=JavaScript><></SCRIPT>
</SELECT>年<SELECTname=SMonchange=changeCld()
style="FONT-SIZE:9pt">
<SCRIPTlanguage=JavaScript><></SCRIPT>
</SELECT>月</FONT><FONTcolor=#ffffffface=宋体id=GZ
size=4></FONT><BR></TD></TR>
<TRalign=middlebgColor=#e0e0e0>
<TDwidth=54>日</TD>
<TDwidth=54>一</TD>
<TDwidth=54>二</TD>
<TDwidth=50>三</TD>
<TDwidth=54>四</TD>
<TDwidth=54>五</TD>
<TDwidth=54>六</TD></TR>
<SCRIPTlanguage=JavaScript><></SCRIPT>
</TBODY></TABLE></TD>
<TDalign=middlevAlign=topwidth=60><BR><BR><BR><BR><BUTTON
onclick="pushBtm('YU')"style="FONT-SIZE:9pt">年↑</BUTTON><BR><BUTTON
onclick="pushBtm('YD')"style="FONT-SIZE:9pt">年↓</BUTTON>
<P><BUTTONonclick="pushBtm('MU')"
style="FONT-SIZE:9pt">月↑</BUTTON><BR><BUTTONonclick="pushBtm('MD')"
style="FONT-SIZE:9pt">月↓</BUTTON>
<P><BUTTONonclick="pushBtm('')"style="FONT-SIZE:9pt">当月</BUTTON>
<P><INPUTonclick="javascript:history.back(1)"style="FONT-SIZE:9pt"type=buttonvalue=返回>
</P></TD></TR></TBODY></TABLE></FORM></CENTER>
</BODY></HTML>