?? 日歷.htm
字號:
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 S(y,n,pd){ //pd取值為0或1,分別表示平氣和定氣,該函數返回節氣的D0值
var juD=y*(365.2423112-6.4e-14*(y-100)*(y-100)-3.047e-8*(y-100))+15.218427*n+1721050.71301;//儒略日
var tht=3e-4*y-0.372781384-0.2617913325*n;//角度
var yrD=(1.945*Math.sin(tht)-0.01206*Math.sin(2*tht))*(1.048994-2.583e-5*y);//年差實均數
var shuoD=-18e-4*Math.sin(2.313908653*y-0.439822951-3.0443*n);//朔差實均數
var vs=(pd)?(juD+yrD+shuoD-erD(y,1,0)-1721425):(juD-erD(y,1,0)-1721425);
return vs;
}
//等效標準天數
function erD(y,m,d){
var verD=(y-1)*365+Math.floor((y-1)/4)+D0(y,m,d)-2; //Julian的等效標準天數
if(y>1582)
verD+=-Math.floor((y-1)/100)+Math.floor((y-1)/400)+2; //Gregorian的等效標準天數
return verD;
}
//判斷Gregorian歷還是Julian歷
function ifGr(y,m,d,opt){ //陽歷y年m月(1,2,..,12,下同)d日,opt=1,2,3分別表示標準日歷,Gregorge歷和Julian歷
if(opt==1){
if(y>1582||(y==1582&&m>10)||(y==1582&&m==10&&d>14))
return(1); //Gregorian
else
if(y==1582&&m==10&&d>=5&&d<=14)
return(-1); //空
else
return(0); //Julian
}
if(opt==2)
return(1); //Gregorian
if(opt==3)
return(0); //Julian
}
//日差天數
function D0(y,m,d){
var ifG=ifGr(y,m,d,1);
var monL=new Array(0,31,28,31,30,31,30,31,31,30,31,30,31);
if(ifG)
if((y%100!=0&&y%4==0)||(y%400==0))
monL[2]+=1;
else ;
else
if(y%4==0)
monL[2]+=1;
else ;
var verD=0;
for(var i=0;i<=m-1;i++){
verD+=monL[i];
}
verD+=d;
if(y==1582){
if(ifG==1)
verD-=10;
if(ifG==-1)
verD=1/0; //infinity
}
return verD;
}
//反日差天數
function antiD0(y,x){
var k=1;
for(var j=1;j<=12;j++){
var mL=D0(y,j+1,1)-D0(y,j,1);
if(x<=mL||j==12){
var k=j;
break;
}
else
x-=mL;
}
return 100*k+x;
}
//將單位天的純小數轉換成如同5:08的時間格式
function dToStr(dv){
var h=Math.floor(dv*24);
var min=Math.floor((dv*24-h)*60);
if(min<10)
min='0'+min;
return h+'時'+min+'分';
}
function tail(x){
return x-Math.floor(x);
}
function rem(x,w){ //廣義求余
return tail(x/w)*w;
}
//天干
function gan(x){
return x%10;
}
//地支
function zhi(x){
return x%12;
}
//日干支
function dGz(y,m,d,h){
var gzD=(h<23)?erD(y,m,d):erD(y,m,d)+1;
return Math.round(rem(gzD+15,60));
}
//農歷日數
function lunDStr(verD){
var str='十一二三四五六七八九初十廿三';
var vstr=str.charAt(Math.floor(verD/10)+10)+str.charAt(verD%10);
if(verD==10)
vstr='初十';
return vstr;
}
//節氣節日
function jqFtvl(y,m,d){
var sjqFtvl=''; //節氣節日
var thisD0=D0(y,m,d);
var dG=gan(dGz(y,m,d,0));
var dZ=zhi(dGz(y,m,d,0));
var s11=Math.floor(S(y,11,1));
if(thisD0>=s11&&thisD0<s11+10&&dG==3)
sjqFtvl+=' 今日入梅';
var s13=Math.floor(S(y,13,1));
if(thisD0>=s13&&thisD0<s13+12&&dZ==8)
sjqFtvl+=' 今日出梅';
if(((thisD0>s11&&thisD0<s11+7&&dG>3)||(thisD0>s13&&thisD0<s13+4&&dZ<8))||((thisD0>s11)&&(thisD0<s13)))
sjqFtvl+=' 梅雨季節';
//三伏
var s12=Math.floor(S(y,12,1));
var s15=Math.floor(S(y,15,1));
var n=(dG-7)%10+1;
if(n<=0)
n+=10;
var firsrD0=thisD0-n+1;
if(firsrD0>=s12+20&&firsrD0<s12+30)
n!=1?sjqFtvl+=' 初伏第'+n+'天':sjqFtvl+=' 今日數伏,初伏第'+n+'天';
if(firsrD0>=s15&&firsrD0<s15+10)
n!=10?sjqFtvl+=' 末伏第'+n+'天':sjqFtvl+=' 今日末伏第'+n+'天,出伏';
else {
if(firsrD0>=s12+30&&firsrD0<s12+40)
sjqFtvl+=' 中伏第'+n+'天';
if(firsrD0>=s12+40&&firsrD0<s12+50)
sjqFtvl+=' 中伏第'+(n+10)+'天';
}
//九九
var s24=Math.floor(S(y,24,1));
var s_24=Math.floor(S(y-1,24,1));
var d1=thisD0-s24;
var d2=thisD0-s_24+D0(y-1,12,31)-D0(y-1,1,0);
if(d1>=0||d2<=80){
if(m==12){
w=1;
verD=d1+1;
if(verD>9){
w+=1;
verD-=9;
}
}
else{
var w=Math.floor(d2/9)+1;
var verD=Math.round(rem(d2,9))+1;
}
sjqFtvl+=' '+lunDStr(w).charAt(1)+'九'+'第'+verD+'天';
}
return sjqFtvl;
}
//顯示詳細日期資料
function mOvr(v) {
var s,festival,sjqFtvl;
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= 'help';
if(cld[d].solarTerms == '' && cld[d].solarFestival == '' && cld[d].lunarFestival == '')
festival = '';
else
festival = '<TABLE WIDTH=100% BORDER=0 CELLPADDING=2 CELLSPACING=0 BGCOLOR="#CCFFCC"><TR><TD ALIGN="center">'+
'<FONT COLOR="#000000" STYLE="font-size:9pt;">'+cld[d].solarTerms + ' ' + cld[d].solarFestival + ' ' + cld[d].lunarFestival+'</FONT></TD>'+
'</TR></TABLE>';
sjqFtvl=jqFtvl(cld[d].sYear,cld[d].sMonth,cld[d].sDay)//加這個是顯示數九、數伏、梅雨!
s= '<table border="2" width="140" bordercolor="#0066CC" bgcolor="#FFFBE8" cellpadding="0" cellspacing="0"><TR><td>' +
'<TABLE WIDTH=100% BORDER=0 CELLPADDING=0 CELLSPACING=0><TR><TD ALIGN="center"><FONT COLOR="#ff00ff" STYLE="font-size:9pt;">'+
cld[d].sYear+'年'+cld[d].sMonth+'月'+cld[d].sDay+'日 星期'+cld[d].week+'<br>'+
'<font color="#FF8000">農歷'+cld[d].cYear+'年'+(cld[d].isLeap?' 閏':' ')+cMonth(cld[d].lMonth)+'月'+cDay(cld[d].lDay)+'</font><br>'+
'<font color="009900">'+cld[d].cYear+'年 '+cld[d].cMonth+'月 '+cld[d].cDay + '日</font>'+
sjqFtvl+//加這個是顯示數九、數伏、梅雨!
'</FONT></TD></TR></TABLE>'+ festival +'</TD></TR></TABLE>';
document.all["detail"].innerHTML = s;
if (snow == 0) {
dStyle.left = x+offsetx-(wi
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -