?? 日歷.htm
字號:
if(lD>lX) {
sDObj = new Date(y,m,i+1); //當月一日日期
lDObj = new Lunar(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;
}
//依節(jié)氣調整二月分的年柱, 以立春為界
if(m==1 && (i+1)==term2) cY=cyclical(y-1900+36);
//依節(jié)氣月柱, 以「節(jié)」為界
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 );
}
//節(jié)氣 修改這里顯示交節(jié)時刻
var sDt1=S(y,(2*m+1),1);//交節(jié)時刻-節(jié),即平氣
var sDt2=S(y,(2*m+2),1);//交節(jié)時刻-氣,即定氣
tmp1=sTerm(y,m*2 )-1;
tmp2=sTerm(y,m*2+1)-1;
this[tmp1].solarTerms = solarTerm[m*2]+" "+dToStr(tail(sDt1));
this[tmp2].solarTerms = solarTerm[m*2+1]+" "+dToStr(tail(sDt2));
if(m==3) this[tmp1].color = 'red'; //清明顏色
//公歷節(jié)日
for(i in sFtv)
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';
}
//月周節(jié)日
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 + ' ';
}
}
//農歷節(jié)日
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';
}
}
}
//復活節(jié)只出現(xiàn)在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+' 復活節(jié) Easter Sunday';
}
//黑色星期五
if((this.firstWeek+12)%7==5)
this[12].solarFestival += '黑色星期五';
if(m==0) this[19].solarFestival = this[19].solarFestival+unescape('白墨生日(公歷)');
//今日
if(y==tY && m==tM)
this[tD-1].solarTerms +=getTime1()
if(y==tY && m==tM) this[tD-1].isToday = true;
}
//======================================= 返回該年的復活節(jié)(春分后第一次滿月周后的第一主日)
function easter(y) {
var term2=sTerm(y,5); //取得春分日期
var dayTerm2 = new Date(Date.UTC(y,2,term2,0,0,0,0)); //取得春分的公歷日期控件(春分一定出現(xiàn)在3月)
var lDayTerm2 = new Lunar(dayTerm2); //取得取得春分農歷
if(lDayTerm2.day<15) //取得下個月圓的相差天數(shù)
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 cMonth(d){
var s;
switch (d) {
case 1:
s = '正'; break;
case 11:
s = '冬'; break;
case 12:
s = '臘'; break;
break;
default :
s = nStr1[d%12];
}
return(s);
}
//====================== 中文日期
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 = '宣統(tǒng)' + (((SY-1908)==1)?'元':SY-1908);
if(SY>1911 && SY<1950) yDisplay = '民國' + (((SY-1911)==1)?'元':SY-1911);
if(SY>1948) yDisplay = '建國<font color=red>' + (((SY-1949)==1)?'元':SY-1949);
GZ.innerHTML = ' <a onmouseout="hidetip2()" onmouseover=showtip2(this,event,"'+month2[SM]+'") href="#">'+yDisplay+'</font>年'+'</a> '+Animals[(SY-4)%12]+'年[農歷<font color=red>' + cyclical(SY-1900+36)+'</font>年]';
YMBG.innerHTML = " " + SY + "<BR> " + monthName[SM];
YMBG1.innerHTML = monthName1[SM]+"</a>";
YMBG2.innerHTML = monthName2[SM]+"</a>";
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].solarFestival;
if(s.length>0) {//公歷節(jié)日
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].lunarFestival;
if(s.length>0) { //農歷節(jié)日
if(s.length>6) s = s.substr(0, 4)+'...';
s = s.fontcolor('red');
}
else { //廿四節(jié)氣
s=cld[sD].solarTerms;
if(s.length>0) s = s.fontcolor('limegreen');
}
}
if (GetCookie(10000*cld[sD].sYear+100*cld[sD].sMonth+cld[sD].sDay,0)!=null)
sObj.className = 'bm' //這三行給有日記的日期加紅框
else
if(cld[sD].solarTerms=='清明') s = '清明節(jié)'.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 {
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -