百度用到的Js日历

chenyajun  2020-01-29 15:20:59  阅读 2181 次 评论 0 条
<title>百度的Js日历,值得一看</title> 
<table cellpadding="0" cellspacing="0" id="1"> 
<tr> 
<td><style> 
body,td,.p1,.p2,.i{font-family:arial} 
body{margin:6px 0 0 0;background-color:#fff;color:#000;} 
table{border:0} 
#cal{width:434px;border:1px solid #c3d9ff;font-size:12px;margin:8px 0 0 15px} 
#cal #top{height:29px;line-height:29px;background:#e7eef8;color:#003784;padding-left:70px} 
#cal #top select{font-size:12px} 
#cal #top input{padding:0} 
#cal ul#wk{margin:0;padding:0;height:25px} 
#cal ul#wk li{float:left;width:60px;text-align:center;line-height:25px;list-style:none} 
#cal ul#wk li b{font-weight:normal;color:#c60b02} 
#cal #cm{clear:left;border-top:1px solid #ddd;border-bottom:1px dotted #ddd;position:relative} 
#cal #cm .cell{position:absolute;width:42px;height:36px;text-align:center;margin:0 0 0 9px} 
#cal #cm .cell .so{font:bold 16px arial;} 
#cal #bm{text-align:right;height:24px;line-height:24px;padding:0 13px 0 0} 
#cal #bm a{color:7977ce} 
#cal #fd{display:none;position:absolute;border:1px solid #dddddf;background:#feffcd;padding:10px;line-height:21px;width:150px} 
#cal #fd b{font-weight:normal;color:#c60a00} 
</style> 
<!--[if IE]> 
<style> 
#cal #top{padding-top:4px} 
#cal #top input{width:65px} 
#cal #fd{width:170px} 
</style> 
<![endif]--> 
<div id="cal"> 
<div id="top">公元  
<select> 
</select> 
 年  
<select> 
</select> 
 月    农历<span></span>年 [ <span></span>年 ]       
<input type="button" value="回到今天" title="点击后跳转回今天" style="padding:0px"> 
</div> 
<ul id="wk"> 
<li>一</li> 
<li>二</li> 
<li>三</li> 
<li>四</li> 
<li>五</li> 
<li><b>六</b></li> 
<li><b>日</b></li> 
</ul> 
<div id="cm"></div> 
<div id="bm"></div> 
</div></td> 
</tr> 
</table> 
<script type="text/javascript"> 
<!-- 
(function(){ 
var S=navigator.userAgent.indexOf("MSIE")!=-1&&!window.opera; 
function M(C){ 
return document.getElementById(C) 
} function R(C){ 
return document.createElement(C) 
} var P=[19416,19168,42352,21717,53856,55632,91476,22176,39632,21970,19168,42422,42192,53840,119381,46400,54944,44450,38320,84343,18800,42160,46261,27216,27968,109396,11104,38256,21234,18800,25958,54432,59984,28309,23248,11104,100067,37600,116951,51536,54432,120998,46416,22176,107956,9680,37584,53938,43344,46423,27808,46416,86869,19872,42448,83315,21200,43432,59728,27296,44710,43856,19296,43748,42352,21088,62051,55632,23383,22176,38608,19925,19152,42192,54484,53840,54616,46400,46496,103846,38320,18864,43380,42160,45690,27216,27968,44870,43872,38256,19189,18800,25776,29859,59984,27480,21952,43872,38613,37600,51552,55636,54432,55888,30034,22176,43959,9680,37584,51893,43344,46240,47780,44368,21977,19360,42416,86390,21168,43312,31060,27296,44368,23378,19296,42726,42208,53856,60005,54576,23200,30371,38608,19415,19152,42192,118966,53840,54560,56645,46496,22224,21938,18864,42359,42160,43600,111189,27936,44448]; 
var K="甲乙丙丁戊己庚辛壬癸"; 
var J="子丑寅卯辰巳午未申酉戌亥"; 
var O="鼠牛虎兔龙蛇马羊猴鸡狗猪"; 
var L=["小寒","大寒","立春","雨水","惊蛰","春分","清明","谷雨","立夏","小满","芒种","夏至","小暑","大暑","立秋","处暑","白露","秋分","寒露","霜降","立冬","小雪","大雪","冬至"]; 
var D=[0,21208,43467,63836,85337,107014,128867,150921,173149,195551,218072,240693,263343,285989,308563,331033,353350,375494,397447,419210,440795,462224,483532,504758]; 
var B="日一二三四五六七八九十"; 
var H=["正","二","三","四","五","六","七","八","九","十","十一","腊"]; 
var E="初十廿卅"; 
var V={ 
"0101":"*1元旦节","0214":"情人节","0305":"学雷锋纪念日","0308":"妇女节","0312":"植树节","0315":"消费者权益日","0401":"愚人节","0501":"*1劳动节","0504":"青年节","0601":"国际儿童节","0701":"中国共产党诞辰","0801":"建军节","0910":"中国教师节","1001":"*3国庆节","1224":"平安夜","1225":"圣诞节" 
} ; 
var T={ 
"0101":"*2春节","0115":"元宵节","0505":"*1端午节","0815":"*1中秋节","0909":"重阳节","1208":"腊八节","0100":"除夕" 
} ; 
function U(Y){ 
function c(j,i){ 
var h=new Date((31556925974.7*(j-1900)+D[i]*60000)+Date.UTC(1900,0,6,2,5)); 
return(h.getUTCDate()) 
} function d(k){ 
var h,j=348; 
for(h=32768;h>8;h>>=1){ 
j+=(P[k-1900]&h)?1:0 
} return(j+b(k)) 
} function a(h){ 
return(K.charAt(h%10)+J.charAt(h%12)) 
} function b(h){ 
if(g(h)){ 
return((P[h-1900]&65536)?30:29) 
} else{ 
return(0) 
} 
} function g(h){ 
return(P[h-1900]&15) 
} function e(i,h){ 
return((P[i-1900]&(65536>>h))?30:29) 
} function C(m){ 
var k,j=0,h=0; 
var l=new Date(1900,0,31); 
var n=(m-l)/86400000; 
this.dayCyl=n+40; 
this.monCyl=14; 
for(k=1900;k<2050&&n>0;k++){ 
h=d(k); 
n-=h; 
this.monCyl+=12 
} if(n<0){ 
n+=h; 
k--; 
this.monCyl-=12 
} this.year=k; 
this.yearCyl=k-1864; 
j=g(k); 
this.isLeap=false; 
for(k=1;k<13&&n>0;k++){ 
if(j>0&&k==(j+1)&&this.isLeap==false){ 
--k; 
this.isLeap=true; 
h=b(this.year) 
} else{ 
h=e(this.year,k) 
} if(this.isLeap==true&&k==(j+1)){ 
this.isLeap=false 
} n-=h; 
if(this.isLeap==false){ 
this.monCyl++ 
} 
} if(n==0&&j>0&&k==j+1){ 
if(this.isLeap){ 
this.isLeap=false 
} else{ 
this.isLeap=true; 
--k; 
--this.monCyl 
} 
} if(n<0){ 
n+=h; 
--k; 
--this.monCyl 
} this.month=k; 
this.day=n+1 
} function G(h){ 
return h<10?"0"+h:h 
} function f(i,j){ 
var h=i; 
return j.replace(/dd?d?d?|MM?M?M?|yy?y?y?/g,function(k){ 
switch(k){ 
case"yyyy":var l="000"+h.getFullYear(); 
return l.substring(l.length-4); 
case"dd":return G(h.getDate()); 
case"d":return h.getDate().toString(); 
case"MM":return G((h.getMonth()+1)); 
case"M":return h.getMonth()+1 
} 
} ) 
} function Z(i,h){ 
var j; 
switch(i,h){ 
case 10:j="初十"; 
break; 
case 20:j="二十"; 
break; 
case 30:j="三十"; 
break; 
default:j=E.charAt(Math.floor(h/10)); 
j+=B.charAt(h%10) 
} return(j) 
} this.date=Y; 
this.isToday=false; 
this.isRestDay=false; 
this.solarYear=f(Y,"yyyy"); 
this.solarMonth=f(Y,"M"); 
this.solarDate=f(Y,"d"); 
this.solarWeekDay=Y.getDay(); 
this.solarWeekDayInChinese="星期"+B.charAt(this.solarWeekDay); 
var X=new C(Y); 
this.lunarYear=X.year; 
this.shengxiao=O.charAt((this.lunarYear-4)%12); 
this.lunarMonth=X.month; 
this.lunarIsLeapMonth=X.isLeap; 
this.lunarMonthInChinese=this.lunarIsLeapMonth?"闰"+H[X.month-1]:H[X.month-1]; 
this.lunarDate=X.day; 
this.showInLunar=this.lunarDateInChinese=Z(this.lunarMonth,this.lunarDate); 
if(this.lunarDate==1){ 
this.showInLunar=this.lunarMonthInChinese+"月" 
} this.ganzhiYear=a(X.yearCyl); 
this.ganzhiMonth=a(X.monCyl); 
this.ganzhiDate=a(X.dayCyl++); 
this.jieqi=""; 
this.restDays=0; 
if(c(this.solarYear,(this.solarMonth-1)*2)==f(Y,"d")){ 
this.showInLunar=this.jieqi=L[(this.solarMonth-1)*2] 
} if(c(this.solarYear,(this.solarMonth-1)*2+1)==f(Y,"d")){ 
this.showInLunar=this.jieqi=L[(this.solarMonth-1)*2+1] 
} if(this.showInLunar=="清明"){ 
this.showInLunar="清明节"; 
this.restDays=1 
} this.solarFestival=V[f(Y,"MM")+f(Y,"dd")]; 
if(typeof this.solarFestival=="undefined"){ 
this.solarFestival="" 
} else{ 
if(/\*(\d)/.test(this.solarFestival)){ 
this.restDays=parseInt(RegExp.$1); 
this.solarFestival=this.solarFestival.replace(/\*\d/,"") 
} 
} this.showInLunar=(this.solarFestival=="")?this.showInLunar:this.solarFestival; 
this.lunarFestival=T[this.lunarIsLeapMonth?"00":G(this.lunarMonth)+G(this.lunarDate)]; 
if(typeof this.lunarFestival=="undefined"){ 
this.lunarFestival="" 
} else{ 
if(/\*(\d)/.test(this.lunarFestival)){ 
this.restDays=(this.restDays>parseInt(RegExp.$1))?this.restDays:parseInt(RegExp.$1); 
this.lunarFestival=this.lunarFestival.replace(/\*\d/,"") 
} 
} if(this.lunarMonth==12&&this.lunarDate==e(this.lunarYear,12)){ 
this.lunarFestival=T["0100"]; 
this.restDays=1 
} this.showInLunar=(this.lunarFestival=="")?this.showInLunar:this.lunarFestival; 
this.showInLunar=(this.showInLunar.length>4)?this.showInLunar.substr(0,2)+"...":this.showInLunar 
} var Q=(function(){ 
var X={ 
} ; 
X.lines=0; 
X.dateArray=new Array(42); 
function Y(a){ 
return(((a%4===0)&&(a%100!==0))||(a%400===0)) 
} function G(a,b){ 
return[31,(Y(a)?29:28),31,30,31,30,31,31,30,31,30,31][b] 
} function C(a,b){ 
a.setDate(a.getDate()+b); 
return a 
} function Z(a){ 
var f=0; 
var c=new U(new Date(a.solarYear,a.solarMonth-1,1)); 
var d=(c.solarWeekDay-1==-1)?6:c.solarWeekDay-1; 
X.lines=Math.ceil((d+G(a.solarYear,a.solarMonth-1))/7); 
for(var e=0;e<X.dateArray.length;e++){ 
if(c.restDays!=0){ 
f=c.restDays 
} if(f>0){ 
c.isRest=true 
} if(d-->0||c.solarMonth!=a.solarMonth){ 
X.dateArray[e]=null; 
continue 
} var b=new U(new Date()); 
if(c.solarYear==b.solarYear&&c.solarMonth==b.solarMonth&&c.solarDate==b.solarDate){ 
c.isToday=true 
} X.dateArray[e]=c; 
c=new U(C(c.date,1)); 
f-- 
} 
} return{ 
init:function(a){ 
Z(a) 
} ,getJson:function(){ 
return X 
} 
} 
} )(); 
var W=(function(){ 
var C=M("top").getElementsByTagName("SELECT")[0]; 
var X=M("top").getElementsByTagName("SELECT")[1]; 
var G=M("top").getElementsByTagName("SPAN")[0]; 
var c=M("top").getElementsByTagName("SPAN")[1]; 
var Y=M("top").getElementsByTagName("INPUT")[0]; 
function a(g){ 
G.innerHTML=g.ganzhiYear; 
c.innerHTML=g.shengxiao 
} function b(g){ 
C[g.solarYear-1901].selected=true; 
X[g.solarMonth-1].selected=true 
} function f(){ 
var j=C.value; 
var g=X.value; 
var i=new U(new Date(j,g-1,1)); 
Q.init(i); 
N.draw(); 
if(this==C){ 
i=new U(new Date(j,3,1)); 
G.innerHTML=i.ganzhiYear; 
c.innerHTML=i.shengxiao 
} var h=new U(new Date()); 
Y.style.visibility=(j==h.solarYear&&g==h.solarMonth)?"hidden":"visible" 
} function Z(){ 
var g=new U(new Date()); 
a(g); 
b(g); 
Q.init(g); 
N.draw(); 
Y.style.visibility="hidden" 
} function d(k,g){ 
for(var j=1901;j<2050;j++){ 
var h=R("OPTION"); 
h.value=j; 
h.innerHTML=j; 
if(j==k){ 
h.selected="selected" 
} C.appendChild(h) 
} for(var j=1;j<13;j++){ 
var h=R("OPTION"); 
h.value=j; 
h.innerHTML=j; 
if(j==g){ 
h.selected="selected" 
} X.appendChild(h) 
} C.onchange=f; 
X.onchange=f 
} function e(g){ 
d(g.solarYear,g.solarMonth); 
G.innerHTML=g.ganzhiYear; 
c.innerHTML=g.shengxiao; 
Y.onclick=Z; 
Y.style.visibility="hidden" 
} return{ 
init:function(g){ 
e(g) 
} ,reset:function(g){ 
b(g) 
} 
} 
} )(); 
var N=(function(){ 
function C(){ 
var Z=Q.getJson(); 
var c=Z.dateArray; 
M("cm").style.height=Z.lines*38+2+"px"; 
M("cm").innerHTML=""; 
for(var a=0;a<c.length;a++){ 
if(c[a]==null){ 
continue 
} var X=R("DIV"); 
if(c[a].isToday){ 
X.style.border="1px solid #a5b9da"; 
X.style.background="#c1d9ff" 
} X.className="cell"; 
X.style.left=(a%7)*60+"px"; 
X.style.top=Math.floor(a/7)*38+2+"px"; 
var b=R("DIV"); 
b.className="so"; 
// http://www.codefans.net 
b.style.color=((a%7)>4||c[a].isRest)?"#c60b02":"#313131"; 
b.innerHTML=c[a].solarDate; 
X.appendChild(b); 
var Y=R("DIV"); 
Y.style.color="#666"; 
Y.innerHTML=c[a].showInLunar; 
X.appendChild(Y); 
X.onmouseover=(function(d){ 
return function(f){ 
F.show({ 
dateIndex:d,cell:this 
} ) 
} 
} )(a); 
X.onmouseout=function(){ 
F.hide() 
} ; 
M("cm").appendChild(X) 
} var G=R("DIV"); 
G.id="fd"; 
M("cm").appendChild(G); 
F.init(G) 
} return{ 
draw:function(G){ 
C(G) 
} 
} 
} )(); 
var F=(function(){ 
var C; 
function Y(e,c){ 
if(arguments.length>1){ 
var b=/([.*+?^=!:${}()|[\]\/\\])/g,Z="{".replace(b,"\\$1"),d="}".replace(b,"\\$1"); 
var a=new RegExp("#"+Z+"([^"+Z+d+"]+)"+d,"g"); 
if(typeof (c)=="object"){ 
return e.replace(a,function(f,h){ 
var g=c[h]; 
return typeof (g)=="undefined"?"":g 
} ) 
} 
} return e 
} function G(b){ 
var a=Q.getJson().dateArray[b.dateIndex]; 
var Z=b.cell; 
var c="#{solarYear} 年 #{solarMonth} 月 #{solarDate} 日 #{solarWeekDayInChinese}"; 
c+="<br><b>农历 #{lunarMonthInChinese}月#{lunarDateInChinese}</b>"; 
c+="<br>#{ganzhiYear}年 #{ganzhiMonth}月 #{ganzhiDate}日"; 
if(a.solarFestival!=""||a.lunarFestival!=""||a.jieqi!=""){ 
c+="<br><b>#{lunarFestival} #{solarFestival} #{jieqi}</b>" 
} C.innerHTML=Y(c,a); 
C.style.top=Z.offsetTop+Z.offsetHeight-5+"px"; 
C.style.left=Z.offsetLeft+Z.offsetWidth-5+"px"; 
C.style.display="block" 
} function X(){ 
C.style.display="none" 
} return{ 
show:function(Z){ 
G(Z) 
} ,hide:function(){ 
X() 
} ,init:function(Z){ 
C=Z 
} 
} 
} )(); 
var A=new U(new Date()); 
if(S){ 
window.attachEvent("onload",function(){ 
W.reset(A) 
} ) 
} W.init(A); 
Q.init(A); 
N.draw(); 
} )(); 
//--> 
</script>


本文地址:https://chenyajun.net/index.php/post/22.html
版权声明:本文为原创文章,版权归 chenyajun 所有,欢迎分享本文,转载请保留出处!

评论已关闭!