📄 日历.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 + -