DrHuang.com | list | math | function | coding | graphics | example | help | ? | 中文
+ + + =

X

Save Your Code

If you click the save button, your code will be saved, and you get an URL you can share with others.

By clicking the "Save" button you agree to our terms and conditions.

Report Error

X

Save to Google Drive

If you have a Google account, you can save this code to your Google Drive.

Google will ask you to confirm Google Drive access.

X

Open from Google Drive

If you have saved a file to Google Drive, you can open it here:

File Save Orien Theme Result Size: 300 x 150
x
 
<!DOCTYPE html>
<html>
    <head>
<meta http-equiv="Content-Type" content="text/html ; CHARSET=UTF-8">
        <title></title>
        <script type="text/javascript">
            var lunarInfo=new Array(
            0x04bd8,0x04ae0,0x0a570,0x054d5,0x0d260,0x0d950,0x16554,0x056a0,0x09ad0,0x055d2,
            0x04ae0,0x0a5b6,0x0a4d0,0x0d250,0x1d255,0x0b540,0x0d6a0,0x0ada2,0x095b0,0x14977, 
            0x04970,0x0a4b0,0x0b4b5,0x06a50,0x06d40,0x1ab54,0x02b60,0x09570,0x052f2,0x04970,
            0x06566,0x0d4a0,0x0ea50,0x06e95,0x05ad0,0x02b60,0x186e3,0x092e0,0x1c8d7,0x0c950, 
            0x0d4a0,0x1d8a6,0x0b550,0x056a0,0x1a5b4,0x025d0,0x092d0,0x0d2b2,0x0a950,0x0b557,
            0x06ca0,0x0b550,0x15355,0x04da0,0x0a5d0,0x14573,0x052d0,0x0a9a8,0x0e950,0x06aa0,
            0x0aea6,0x0ab50,0x04b60,0x0aae4,0x0a570,0x05260,0x0f263,0x0d950,0x05b57,0x056a0,
            0x096d0,0x04dd5,0x04ad0,0x0a4d0,0x0d4d4,0x0d250,0x0d558,0x0b540,0x0b5a0,0x095a6,
            0x095b0,0x049b0,0x0a974,0x0a4b0,0x0b27a,0x06a50,0x06d40,0x0af46,0x0ab60,0x09570,
            0x04af5,0x04970,0x064b0,0x074a3,0x0ea50,0x06b58,0x055c0,0x0ab60,0x096d5,0x092e0,
            0x0c960,0x0d954,0x0d4a0,0x0da50,0x07552,0x056a0,0x0abb7,0x025d0,0x092d0,0x0cab5,
            0x0a950,0x0b4a0,0x0baa4,0x0ad50,0x055d9,0x04ba0,0x0a5b0,0x05176,0x052b0,0x0a930,
            0x07954,0x06aa0,0x0ad50,0x05b52,0x04b60,0x0a6e6,0x0a4e0,0x0d260,0x0ea65,0x0d530, 
            0x05aa0,0x076a3,0x096d0,0x04bd7,0x04ad0,0x0a4d0,0x1d0b6,0x0d250,0x0d520,0x0dd45, 
            0x0b5a0,0x056d0,0x055b2,0x049b0,0x0a577,0x0a4b0,0x0aa50,0x0b255,0x06d20,0x0ada0);
            
            var solarMonth=new Array(31,28,31,30,31,30,31,31,30,31,30,31);
            var Animals= new Array("鼠","牛","虎","兔","龙","蛇","马","羊","猴","鸡","狗","猪");
            var solarTerm = new Array("小寒","大寒","立春","雨水","惊蛰","春分","清明","谷雨","立夏","小满","芒种","夏至","小暑","大暑","立秋","处暑","白露","秋分","寒露","霜降","立冬","小雪","大雪","冬至");
//          var sTsrmInfo =  new Array(0,21208,42467,63836,85337,107014,128867,150921,173149,195551,218072,240693,263343,285969,308563,353350,375494,397447,419210,440795,462224,483532,504758,523532,544758);
            var  sTsrmInfo=  new Array(0,21208,42467,63836,85337,107014,128867,150921,173149,195551,218072,240093,263343,285969,308563,331033,353350,375494,397447,419210,440795,462224,483532,504758)
            var nStr1 = new Array('日','一','二','三','四','五','六','七','八','九','十');
            var nStr2 = new Array('初','十','甘','卅');
            //公历节日
            var sFtv = new Array(
                "0101 元旦",
                "0214 情人节",
                "0308 妇女节",
                "0312 植树节",
                "0315 消费者权益日",
                "0401 愚人节",
                "0501 劳动节 ",
                "0504 青年节",
                "0512 护士节",
                "0601 儿童节",
                "0701 建党节",
                "0801 建军节",
                "0910 教师节",
                "0928 孔子诞辰",
                "1001 国庆节",
                "1006 老人节",
                "1024 联合国日",
                "1224 平安夜",
                "1225 圣诞节");
            //农历节日
            var lFtv = new Array(
                "0101 春节",
                "0115 元宵节",
                "0505 端午节",
                "0707 七夕情人节",
                "0715 中元节",
                "0815 中秋节",
                "0909 重阳节",
                "1208 腊八节",
                "1224 小年");
            //返回农历y年的总天数
            function lYearDays(y) {
                var i, sum = 348;
                for(i=0x8000; i>0x8; i>>=1)sum+=(lunarInfo[y-1900]&i)?1:0;
                return(sum+leapDays(y));
            }
            //返回农历y年闰月的天数
            function leapDays(y){
                if(leapMonth(y)) return((lunarInfo[y-1900] & 0x10000)? 30: 29);
                else return(0);
            }
            //判断y年的农历中哪个月不是闰月,不是闰月返回0
            function leapMonth(y){
                return(lunarInfo[y-1900]&0xf);
            }
            //返回农历y年m月的总天数
            function monthDays(y,m){
                return((lunarInfo[y-1900]&(0x10000>>m))?30:29);
            }
            //算出当前月第一天的农历日期和当前农历日期下一个月农历的第一天日期
            function Dianadny(objDate) {
                var i, leap=0, temp=0;
                var baseDate = new Date(1900,0,31);
                var offset  = Math.floor((objDate - baseDate)/86400000)-2;
                this.dayCyl = 30;
                this.monCyl = 24;
                for(i=1900; i<2050 && offset>0; i++) {
                    temp = lYearDays(i)
                    offset -= temp;
                    this.monCyl += 12;
                }
                if(offset<0) {
                    offset += temp;
                    i--;
                    this.monCyl -= 12;
                }
                this.year = i;
                this.yearCyl=i-1864;
                leap = leapMonth(i);
                this.isLeap = false;
                for(i=1; i<13 && offset>0; i++) {
                    if(leap>0 && i==(leap+1) && this.isLeap==false){--i; this.isLeap = true; temp = leapDsys(this.year);}
                else{
                    temp = monthDays(this.year, i);}
                if(this.isLeap==true && i==(leap+1)) this.isLeap = false;
                offset -=temp;
                if(this.isLeap == false) this.monCyl++;
                }
                if(offset==0 && leap>0 && i==leap+1)
                    if(this.isLeap){this.isLeap = false;}
                    else{this.isLeap=true;--i;--this.monCyl;}
                    if(offset<0){offset+=temp;--this.monCyl;}
                    this.month=i;
                    this.day=offset+1;
            }
            function solarDays(y,m){
                if(m==1)
                    return(((y%4==0)&&(y%100!=0)||(y%400==0))?29:28);
                else
                    return(solarMonth[m]);
            }
            function calElement(sYear,sMonth,sDay,week,lYear,lMonth,lDay,isLeap) {
                this.isToday = false;
                //公历
                this.sYear = sYear;
                this.sMonth = sMonth;
                this.sDay = sDay;
                this.week = week;
                //农历
                this.lYear = lYear;
                this.lMonth = lMonth;
                this.lDay = lDay;
                this.isLeap = isLeap;
                //节日记录
                this.lunarFestival = '';
                this.solarFestival = '';
                this.solarTerms = '';
            }
            //返回某年的爱n个节气为几日
            function sTerm(y,n) {
                var offDate = new Date((31556925974.7*(y-1900)+sTsrmInfo[n]*60000)+Date.UTC(1900,0,6,2,5));
                return(offDate.getUTCDate());
            }
            
            var fat=mat=9;
            var eve=0;
            function calendar(y,m) {
                fat=mat=0;
                var sDObj,lDObj,lY,ID=1,IL,IX=0,tmp1,tmp2;
                var IDPOS = new Array(3);
                var n = 0;
                var firstLM = 0;
                sDObj = new Date(y,m,1);
                this.length = solarDays(y,m);
                this.firstWeek = sDObj.getDay();
                if((m+1)==5){fat=sDObj.getDay()}
                if((m+1)==6){mat=sDObj.getDay()}
                for(var i=0;i<this.length;i++) {
                    if(ID>IX) {
                        sDObj = new Date(y,m,i+1);
                        lDObj = new Dianadny(sDObj);
                        IY = lDObj.year;
                        IM = lDObj.month;
                        ID = lDObj.day;
                        IL = lDObj.isLeap;
                        IX = IL?leapDsys(IY):monthDays(IY,IM);
                        if (IM==12){eve=IX;}
                        if(n==0) firstLM = IM;
                        IDPOS[n++] = i-ID+1;
                    }
                    this[i] = new calElement(y,m+1,i+1,nStr1[(i+this.firstWeek)%7],IY,IM,ID++,IL);
                    if((i+this.firstWeek)%7==0){
                        this[i].color = 'red';
                    }
                }
                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((this.firstWeek+12)%7==5)
                    this[12].solarFestival += '黑色星期五';
                if(y==tY && m==tM) this[tD-1].isToday = true;
            }
            function cDay(d){
                var s;
                switch (d) {
                    case 10:
                    s = '初十';break;
                    case 20:
                    s = '二十';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 TF=true;
                var p1=p2="";
                var i,sD,s,size;
                cld = new calendar(SY,SM);
                GZ.innerHTML = '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;['+Animals[(SY-4)%12]+']';
                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.style.color = '#9900FF';}
                        else{sObj.style.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);}
//                      else{lObj.innerHTML = cDay(cld[sD].sDay);}
                        var Slfw=Ssfw=null;
                        s=cld[sD].solarFestival;
                        for(var ipp=0;ipp<lFtv.length;ipp++){
                            if(parseInt(lFtv[ipp].substr(0,2))==(cld[sD].lMonth)){
                                if(parseInt(lFtv[ipp].substr(2,4))==(cld[sD].lDay)){
                                    lObj.innerHTML=lFtv[ipp].substr(5);
                                    Slfw=lFtv[ipp].substr(5);
                                }
                            }
                            if(12==(cld[sD].lMonth)){
                                if (eve==(cld[sD].lDay)){lObj.innerHTML="除夕";Slfw="除夕";}
                            }
                        }
                        for (var ipp=0;ipp<sFtv.length;ipp++){
                            if(parseInt(sFtv[ipp].substr(0,2))==(SM+1)){
                                if(parseInt(sFtv[ipp].substr(2,4))==(sD+1)){
                                    lObj.innerHTML=sFtv[ipp].substr(5);
                                    Ssfw=sFtv[ipp].substr(5);
                                }
                            }
                        }
                        if ((SM+1)==5){
                            if(fat==0){
                                if((sD+1)==7){Ssfw="母亲节";lObj.innerHTML="母亲节"}
                            }
                            else if(fat<9){
                                if((sD+1)==((7-fat)+8)){Ssfw="母亲节";lObj.innerHTML="母亲节"}
                            }
                        }
                        if((SM+1)==6){
                            if(mat==0){
                                if((sD+1)==14){Ssfw="父亲节";lObj.iinnerHTML="父亲节"}
                            }
                            else if (mat<9){
                                if ((sD+1)==((7-mat)+15)){Ssfw="父亲节";lObj.innerHTML="父亲节"}
                            }
                        }
                        if (s.length<=0){
                            s=cld[sD].solarTerms;
                            if(s.length>0) s = s.fontcolor('limegreen');
                        }
                        if (s.length>0) {lObj.innerHTML+=s;Slfw=s;}
                        if ((Slfw!=null)&&(Ssfw!=null)){
                            lObj.innerHTML=Slfw+"/"+Ssfw;
                        }
                    }
                    else {
                        sObj.innerHTML = '';
                        lObj.innerHTML = '';
                    }
                }
            }
            function changeCld(){
                var y,m;
                y=CLD.SY.selectedIndex+1900;
                m=CLD.SM.selectedIndex;
                drawCld(y,m);
            }
            var Today = new Date();
        
            var tD=Today.getDate();
            var  tY=Today.getFullYear();
            var  tM=Today.getMonth();
            function initial(){
                CLD.SY.selectedIndex=tY-1900;
                CLD.SM.selectedIndex=tM;
                drawCld(tY,tM);
            }
//          window.onload =
//              initial();
            
        </script>
        <style type="text/css">
            table{
                font-size: 12px;
                table-layout: fixed;
                empty-cells: show;
                border-collapse: collapse;
                margin: 0 auto;
                border: 1px solid #cad9ea;
                color: #666;
            }
            td{
                height: 30ox;
                font-family: "arial black";
            }
            th{
                width: 54px;
                font-size: 14px;
                background-color: #e0e0e0;
            }
            td,th{
                border: 1px solid #cad9ea;
                padding: 6px;
            }
            tr{ text-align: center;}
            .header {
                background-color: #006600;
                color: #fff;
                font-size: 14px;
                text-align: left;
            }
            .header #GZ { margin-left: 120px;}
        </style>
    </head>
    
    <body >
        <form name="CLD">
            <table>
                <tr class="header">
                    <td colspan=7>公历
                        <select name="SY" onchange=changeCld()>
                            <script>
                                for(i=1900;i<2050;i++) document.write('<option>'+i);
                            </script>
                        </select>
                        
                        <select name="SM" onchange=changeCld()>
                            <script type="text/javascript">
                                for(i=1;i<13;i++)
                                document.write('<option>'+i);
                            </script>
                        </select>
                        <font id="GZ"></font></td>
                </tr>
                <tr>
                    <th></th>
                    <th></th>
                    <th></th>
                    <th></th>
                    <th></th>
                    <th></th>
                    <th></th>
                </tr>
                <script type="text/javascript">
                    var gNum;
                    for(i=0;i<6;i++) {
                        document.write('<tr>');
                        for(j=0;j<7;j++) {
                            gNum= i*7+j;
                            document.write('<td id="GD' + gNum + '"><font id="SD' + gNum +'"');
                            if(j == 0) document.write('color=red');
                            if(j == 6) document.write('color=blue');
                            document.write('>  </font><br><font id="LD' + gNum + '" ">  </font></td>')
                        }
                        document.write('</tr>');
                    }
                    
                </script>
            </table>
        </form>
        <script>
        initial();
        </script>
    </body>
</html>
X

Report a Problem: