jimingminlovefly

          導航

          <2025年7月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          留言簿

          文章分類

          文章檔案

          閱讀排行榜

          評論排行榜

          統計

          最新評論

          js-日歷效果及日歷算法

          <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
          <HTML>
           <HEAD>
            <TITLE> New Document </TITLE>
            <META NAME="Generator" CONTENT="EditPlus">
            <META NAME="Author" CONTENT="">
            <META NAME="Keywords" CONTENT="">
            <META NAME="Description" CONTENT="">
            <script type="text/javascript" src="http://www.517hk.com/js/cityjs/jquery-1.4.2.min.js"></script>
            <SCRIPT LANGUAGE="JavaScript">
            <!--
           // 給定年月獲取當月天數   

          function GetMDay(y, m) { 

              var mday = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31); 

              if ((y % 40 == 0 && y % 100 != 0) || y % 400 == 0)//判斷是否是閏月 

                  mday[1] = 29; 

              return mday[m - 1]; 

            

          // 獲取星期數 

          function WeekNumber(y, m, d) { 

              var wk; 

              if (m <= 12 && m >= 1) { 

                  for (var i = 1; i < m; ++i) { 

                      d += GetMDay(y, i); 

                  } 

              } 

              /*根據日期計算星期的公式*/

              wk = (y - 1 + (y - 1) / 4 - (y - 1) / 100 + (y - 1) / 400 + d) % 7; 

              //0對應星期天,1對應星期一 

              return parseInt(wk); 

            

          function SetCalendar(year, month) { 

            

              var daynumber = GetMDay(year, month); //當月天數 
          //alert("當月天數  "+daynumber);
              var firstnumber = WeekNumber(year, month, 1); //當月第一天星期 
          //alert("當月第一天星期   "+firstnumber);
              var lastnumber = WeekNumber(year, month, daynumber); //當月最后一天星期 
          //alert("當月最后一天星期   "+lastnumber);
              var weeknumber = (daynumber - (7 - firstnumber) - (lastnumber + 1)) / 7; //除去第一個星期和最后一個星期的周數 
          //alert("除去第一個星期和最后一個星期的周數 "+weeknumber);
              var day = 1; 

              var name; 

              var calendar = ""; 

              calendar += "<table border=\"0\" cellspacing=\"1\" style=\"background-color:#a0c6e5\">"; 

              calendar += "<tr>"; 

              calendar += "<td>星期天</td>"; 

              calendar += "<td>星期一</td>"; 

              calendar += "<td>星期二</td>"; 

              calendar += "<td>星期三</td>"; 

              calendar += "<td>星期四</td>"; 

              calendar += "<td>星期五</td>"; 

              calendar += "<td>星期六</td>"; 

              calendar += "</tr>"; 

            

              calendar += "<tr>"; 

              var i = 0; 

              for (i = 0; i < firstnumber; i++)//第一個星期 

              { 

                  calendar += "<td></td>"; 

              } 

              for (i = firstnumber; i < 7; i++) { 

                  name = year + "-" + month + "-" + day; 

                  calendar += "<td id=\"" + name + "\">" + day + "</td>"; 

                  day++; 

              } 

              calendar += "</tr>"; 

              var number = 0;//星期數,末尾添加空行用,統一樣式。 

              for (i = 0; i < weeknumber; i++)//其他星期 

              { 

                  calendar += "<tr>"; 

                  for (var k = daynumber - (7 - firstnumber) - (weeknumber - 1) * 7; k < daynumber - (7 - firstnumber) - (weeknumber - 1) * 7 + 7; k++) { 

                      name = year + "-" + month + "-" + day; 

                      calendar += "<td id=\"" + name + "\">" + day + "</td>"; 

                      day++; 

                  } 

                  calendar += "</tr>"; 

                  number++; 

              } 

            

              calendar += "<tr>"; 

              for (i = 0; i < lastnumber + 1; i++)//最后一個星期 

              { 

                  name = year + "-" + month + "-" + day; 

                  calendar += "<td id=\"" + name + "\">" + day + "</td>"; 

                  day++; 

              } 

              for (i = lastnumber + 1; i < 7; i++) { 

                  calendar += "<td>"; 

                  calendar += "</td>"; 

              } 

              calendar += "</tr>"; 

            

              if (number == 3) { 

                  calendar += "<tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>"; 

              } 

            

              calendar += "</table>"; 

              return calendar; 

          }

          function show(){
           $("td").each(function(){
            if($(this).attr("id")=="2011-8-7"){
             $(this).html("測試1");
            }
           })
          }
            //-->
            </SCRIPT>
           </HEAD>

           <BODY>
           <input id="" type="text"/>起始日期 <input id="" type="text"/>截止日期 <input id="" type="text"/>搜索
            <SCRIPT LANGUAGE="JavaScript">
            <!--
           
           document.write(SetCalendar(2011,8));
           document.write("<input type='button' onclick='show()'/><br/>");
           document.write("<br/>");
            //-->
            </SCRIPT>

           </BODY>
          </HTML>

          posted on 2011-11-09 11:10 計明敏 閱讀(3439) 評論(2)  編輯  收藏 所屬分類: js

          評論

          # re: js-日歷效果及日歷算法[未登錄] 2014-01-25 15:47 bob

          算法有錯。2013年12月的值不對  回復  更多評論   

          # re: js-日歷效果及日歷算法 2014-06-18 09:04 wteam

          判斷閏年那部分代碼錯了:
          if ((y % 40 == 0 && y % 100 != 0) || y % 400 == 0)//判斷是否是閏月

          正確應該是:普通年能整除4且不能整除100的為閏年(摘自 百度百科):

          if ((y % 4 == 0 && y % 100 != 0) || y % 400 == 0)//判斷是否是閏月   回復  更多評論   

          主站蜘蛛池模板: 黑山县| 塔河县| 岐山县| 土默特左旗| 潢川县| 昆山市| 措勤县| 桂阳县| 昌吉市| 包头市| 潼关县| 乌鲁木齐县| 苍山县| 锦屏县| 高雄县| 多伦县| 泉州市| 临猗县| 敖汉旗| 东乡族自治县| 邯郸市| 海林市| 淮安市| 中卫市| 新宁县| 新邵县| 正镶白旗| 闻喜县| 宾川县| 蒙城县| 越西县| 江阴市| 遵义市| 新绛县| 西华县| 河池市| 深州市| 平顺县| 葫芦岛市| 鹤壁市| 丰顺县|