jimingminlovefly

          統計

          最新評論

          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 計明敏 閱讀(3434) 評論(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)//判斷是否是閏月   回復  更多評論   

          主站蜘蛛池模板: 来安县| 格尔木市| 湄潭县| 盖州市| 友谊县| 洱源县| 丹阳市| 白朗县| 东丽区| 雅安市| 琼中| 黄梅县| 麟游县| 定西市| 北安市| 潜山县| 莱州市| 奉化市| 镇赉县| 许昌县| 进贤县| 渑池县| 乌兰察布市| 陵水| 湖北省| 柘荣县| 体育| 黄冈市| 城步| 来安县| 上思县| 新巴尔虎右旗| 阿拉尔市| 元朗区| 招远市| 晴隆县| 教育| 霍林郭勒市| 江油市| 正宁县| 商洛市|