?? calendargb.htm
字號:
//依節氣調整二月分的年柱, 以立春為界 if(m==1 && (i+1)==term2) cY=cyclical(y-1900+36); //依節氣月柱, 以「節」為界 if((i+1)==firstNode) cM = cyclical((y-1900)*12+m+13); //日柱 cD = cyclical(dayCyclical+i); //sYear,sMonth,sDay,week, //lYear,lMonth,lDay,isLeap, //cYear,cMonth,cDay this[i] = new calElement(y, m+1, i+1, nStr1[(i+this.firstWeek)%7], lY, lM, lD++, lL, cY ,cM, cD ); } //節氣 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(i in sFtv) if(sFtv[i].match(/^(\d{2})(\d{2})([\s\*])(.+)$/)) if(Number(RegExp.$1)==(m+1)) { if(Number(RegExp.$2)<=this.length){ this[Number(RegExp.$2)-1].solarFestival += RegExp.$4 + ' '; if(RegExp.$3=='*') this[Number(RegExp.$2)-1].color = 'red'; } } //月周節日 for(i in wFtv) if(wFtv[i].match(/^(\d{2})(\d)(\d)([\s\*])(.+)$/)) if(Number(RegExp.$1)==(m+1)) { tmp1=Number(RegExp.$2); tmp2=Number(RegExp.$3); if(tmp1<5) this[((this.firstWeek>tmp2)?7:0) + 7*(tmp1-1) + tmp2 - this.firstWeek].solarFestival += RegExp.$5 + ' '; else { tmp1 -= 5; tmp3 = (this.firstWeek+this.length-1)%7; //當月最后一天星期? this[this.length - tmp3 - 7*tmp1 + tmp2 - (tmp2>tmp3?7:0) - 1 ].solarFestival += RegExp.$5 + ' '; } } //農歷節日 for(i in lFtv) 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].isLeap!=true) { this[tmp2].lunarFestival += RegExp.$4 + ' '; if(RegExp.$3=='*') this[tmp2].color = 'red'; } } } //復活節只出現在3或4月 if(m==2 || m==3) { var estDay = new easter(y); if(m == estDay.m) this[estDay.d-1].solarFestival = this[estDay.d-1].solarFestival+' 復活節 Easter Sunday'; } if(m==2) this[20].solarFestival = this[20].solarFestival+unescape('%20%u6D35%u8CE2%u751F%u65E5'); //黑色星期五 if((this.firstWeek+12)%7==5) this[12].solarFestival += '黑色星期五'; if(m==8) this[13].solarFestival = this[13].solarFestival+unescape('%20%u795D%u8D3A%u6885%u7AF9%u677E%u751F%u65E5%u5FEB%u4E50%u003A%u0029'); //今日 if(y==tY && m==tM) this[tD-1].isToday = true;}//======================================= 返回該年的復活節(春分后第一次滿月周后的第一主日)function easter(y) { var term2=sTerm(y,5); //取得春分日期 var dayTerm2 = new Date(Date.UTC(y,2,term2,0,0,0,0)); //取得春分的公歷日期控件(春分一定出現在3月) var lDayTerm2 = new Lunar(dayTerm2); //取得取得春分農歷 if(lDayTerm2.day<15) //取得下個月圓的相差天數 var lMlen= 15-lDayTerm2.day; else var lMlen= (lDayTerm2.isLeap? leapDays(y): monthDays(y,lDayTerm2.month)) - lDayTerm2.day + 15; //一天等于 1000*60*60*24 = 86400000 毫秒 var l15 = new Date(dayTerm2.getTime() + 86400000*lMlen ); //求出第一次月圓為公歷幾日 var dayEaster = new Date(l15.getTime() + 86400000*( 7-l15.getUTCDay() ) ); //求出下個周日 this.m = dayEaster.getUTCMonth(); this.d = dayEaster.getUTCDate();}//====================== 中文日期function cDay(d){ var s; switch (d) { case 10: s = '初十'; break; case 20: s = '二十'; break; break; case 30: s = '三十'; break; break; default : s = nStr2[Math.floor(d/10)]; s += nStr1[d%10]; } return(s);}///////////////////////////////////////////////////////////////////////////////var cld;function drawCld(SY,SM) { var i,sD,s,size; cld = new calendar(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>1948) 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) //顯示農歷月 if(cld[sD].isLeap) //閏月 lObj.innerHTML = '<b>閏'+cld[sD].lMonth+'月' + (leapDays(cld[sD].lYear)==29?'小':'大')+'</b>'; else //非閏月 lObj.innerHTML = '<b>'+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=='黑色星期五')?s.fontcolor('black'):s.fontcolor('blue'); } else { //廿四節氣 s=cld[sD].solarTerms; if(s.length>0) s = s.fontcolor('limegreen'); } } if(cld[sD].solarTerms=='清明') s = '清明節'.fontcolor('red'); if(cld[sD].solarTerms=='芒種') s = '芒種'.fontcolor('red'); if(cld[sD].solarTerms=='夏至') s = '夏至'.fontcolor('red'); if(cld[sD].solarTerms=='冬至') s = '冬至'.fontcolor('red'); if(s.length>0) lObj.innerHTML = s; } else { //非日期 sObj.innerHTML = ''; lObj.innerHTML = ''; } }}function changeCld() { var y,m; y=CLD.SY.selectedIndex+1900; m=CLD.SM.selectedIndex; drawCld(y,m);}function pushBtm(K) { switch (K){ case 'YU' : if(CLD.SY.selectedIndex>0) CLD.SY.selectedIndex--; break; case 'YD' : if(CLD.SY.selectedIndex<200) 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<200) CLD.SY.selectedIndex++; } break; default : CLD.SY.selectedIndex=tY-1900; CLD.SM.selectedIndex=tM; } changeCld();}var Today = new Date();var tY = Today.getFullYear();var tM = Today.getMonth();var tD = Today.getDate();//////////////////////////////////////////////////////////////////////////////var width = "130";var offsetx = 2;var offsety = 8;var x = 0;var y = 0;var snow = 0;var sw = 0;var cnt = 0;var dStyle;document.onmousemove = mEvn;//顯示詳細日期資料function mOvr(v) { var s,festival,spcday; var sObj=eval('SD'+ v); var d=sObj.innerHTML-1; //sYear,sMonth,sDay,week, //lYear,lMonth,lDay,isLeap, //cYear,cMonth,cDay if(sObj.innerHTML!='') { sObj.style.cursor = 's-resize'; spcday=cld[d].sMonth==3 && cld[d].sDay==3*7?unescape('%20%u6797%u6D35%u8CE2%u7684%u751F%u65E5'):''; if(cld[d].solarTerms == '' && cld[d].solarFestival == '' && cld[d].lunarFestival == '' && spcday=='') festival = ''; else festival = '<TABLE WIDTH=100% BORDER=0 CELLPADDING=2 CELLSPACING=0 BGCOLOR="#CCFFCC"><TR><TD>'+ '<FONT COLOR="#000000" STYLE="font-size:9pt;">'+cld[d].solarTerms + ' ' + cld[d].solarFestival + ' ' + cld[d].lunarFestival+' '+spcday+'</FONT></TD>'+ '</TR></TABLE>'; s= '<TABLE WIDTH="130" BORDER=0 CELLPADDING="2" CELLSPACING=0 BGCOLOR="#000066" style="filter:Alpha(opacity=80)"><TR><TD>' + '<TABLE WIDTH=100% BORDER=0 CELLPADDING=0 CELLSPACING=0><TR><TD ALIGN="right"><FONT COLOR="#ffffff" STYLE="font-size:9pt;">'+ cld[d].sYear+' 年 '+cld[d].sMonth+' 月 '+cld[d].sDay+' 日<br>星期'+cld[d].week+'<br>'+ '<font color="violet">農歷'+(cld[d].isLeap?'閏 ':' ')+cld[d].lMonth+' 月 '+cld[d].lDay+' 日</font><br>'+ '<font color="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; } }}//清除詳細日期資料function mOut() { if ( cnt >= 1 ) { sw = 0; } if ( sw == 0 ) { snow = 0; dStyle.visibility = "hidden";}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -