js 計算某月從1號開始,一共跨幾周

先上效果圖

jsp月份選擇

<input name="sdate" id="sdate"   class="layui-input"  lay-key="17" type="text" />

級聯周

<select name="edate" id="edate" lay-filter="edateFilter"></select>

$(function () {
            initSelect(getInfo('<%=sdate %>'));

            laydate.render({
                    elem : '#sdate',
                    type: 'month',change: function(value, date, endDate){ //選擇月份的時候重置周下拉框
                        $('#sdate').val(value);
                        $('#layui-laydate17').remove();//刪除
                        initSelect(getInfo(value));
                    }
                });

});

function initSelect(array){
            layui.use(['form' ], function() {
                var form=layui.form;
               $('#edate').empty();
            for(var j=0;j<array.length;j++){
                   var obj = array[j];
                   var flag = isDateBetween('<%=edate %>',obj.from,obj.to);
                   var ss = '<option value="' +obj.from+'=='+obj.to + '"';
                   if(flag){
                       ss += ' selected ';
                       curr1 = obj.from; curr2 = obj.to; 
                   }
                   ss += ' >'+ formatName(j,obj.from,obj.to)+ '</option>';
                       $('#edate').append(ss);
               }
            form.render('select');
            });
       }
       /** 
     * 判斷日期是否在區間內,在區間內返回true,否返回false 
     * @param dateString 日期字符串 
     * @param startDateString 區間開始日期字符串 
     * @param endDateString 區間結束日期字符串 
     * @returns {Number} 
     */  
    function isDateBetween(dateString, startDateString, endDateString){  
        if(isEmpty(dateString)){  
            alert("dateString不能爲空");  
            return;  
        }  
        if(isEmpty(startDateString)){  
            alert("startDateString不能爲空");  
            return;  
        }  
        if(isEmpty(endDateString)){  
            alert("endDateString不能爲空");  
            return;  
        }  
        var flag = false;  
        var startFlag = (dateCompare(dateString, startDateString) < 1);  
        var endFlag = (dateCompare(dateString, endDateString) > -1);  
        if(startFlag && endFlag){  
            flag = true;  
        }  
        return flag;  
    };  
    function dateCompare(dateString, compareDateString){  
        if(isEmpty(dateString)){  
            alert("dateString不能爲空");  
            return;  
        }  
        if(isEmpty(compareDateString)){  
            alert("compareDateString不能爲空");  
            return;  
        }  
        var dateTime = dateParse(dateString).getTime();  
        var compareDateTime = dateParse(compareDateString).getTime();  
        if(compareDateTime > dateTime){  
            return 1;  
        }else if(compareDateTime == dateTime){  
            return 0;  
        }else{  
            return -1;  
        }  
    };  
    function dateParse(dateString){  
        var SEPARATOR_BAR = "-";  
        var SEPARATOR_SLASH = "/";  
        var SEPARATOR_DOT = ".";  
        var dateArray;  
        if(dateString.indexOf(SEPARATOR_BAR) > -1){  
            dateArray = dateString.split(SEPARATOR_BAR);    
        }else if(dateString.indexOf(SEPARATOR_SLASH) > -1){  
            dateArray = dateString.split(SEPARATOR_SLASH);  
        }else{  
            dateArray = dateString.split(SEPARATOR_DOT);  
        }  
        return new Date(dateArray[0], dateArray[1]-1, dateArray[2]);   
    };  
       function formatName(val,from,to){
           var str = '第';
           if(val == 0){ str += '一';
           }else if(val == 1){ str += '二';
           }else if(val == 2){ str += '三';
           }else if(val == 3){ str += '四';
           }else if(val == 4){ str += '五';
           }else if(val == 5){ str += '六';
           }else if(val == 6){str += '七'; }
           str += '周(';
           var fromDate = new Date(from);
        str += (fromDate.getMonth() + 1) + '月' + fromDate.getDate()+'日';
        str += ' - ';
        var toDate = new Date(to);
        str += (toDate.getMonth() + 1) + '月' + toDate.getDate()+'日';
           str += ')';
           return str;
       }
       function getInfo(val) {
           var array = new Array();
           var year = parseInt(val.split('-')[0],10), 
               month = parseInt(val.split('-')[1],10);
           var d = new Date();
           d.setFullYear(year, month-1, 1);
           var w1 = d.getDay();
           if (w1 == 0) w1 = 7;
           d.setFullYear(year, month, 0);
           var dd = d.getDate();
           if (w1 != 1) d1 = 7 - w1 + 2;
           else d1 = 1;
           week_count = Math.ceil((dd-d1+1)/7);
           for (var i = 0; i < week_count; i++) {
               var monday = d1+i*7;
               var sunday = monday + 6;
               var from = year+'-'+formatD(month)+'-'+formatD(monday);
               var to = '';
               if (sunday <= dd) {
                   to = year+'-'+formatD(month)+'-'+formatD(sunday);
               } else {
                   d.setFullYear(year, month-1, sunday);
                   to = d.getFullYear()+'-'+formatD(d.getMonth()+1)+'-'+formatD(d.getDate());
               }
                if(i == 0){//第一次循環的時候 判斷第一個星期一是否爲1號,如果不是加上包含1號的跨月 周
                    var data = from.split('-');
                    var mm = new Date();
                      mm.setFullYear(data[0], data[1]-1, data[2]);
                      var A = mm.getDate();
                    if(A > 1){ //不是1號
                          var B = new Date(); 
                          B.setFullYear(data[0], data[1]-1, A-1);
                          var t = GetDay(B);
                          var f = GetMonday(B);
                        var obj = new Object();
                        obj.from = f; obj.to = t;
                     array.push(obj);
                    }
                }
                var obj = new Object();
                obj.from = from; obj.to = to;
                array.push(obj);
           }
           return array;
    }
       
       function formatD(val){
           var dd = parseInt(val,10);
           if(dd < 10){
               return '0'+dd;
           }else{
               return dd+'';
           }
       }
       function GetMonday(dd) {
           var week = dd.getDay(); //獲取時間的星期數
           var minus = week ? week - 1 : 6;
           dd.setDate(dd.getDate() - minus); //獲取minus天前的日期
           var y = dd.getFullYear();
           var m = dd.getMonth() + 1; //獲取月份
           if(m < 10) m = '0' + m; 
           var d = dd.getDate();
           if(d < 10) d = '0' + d;
           return y + '-' + m + '-' + d;
       }
       function GetDay(dd){
            var y = dd.getFullYear();
        var m = dd.getMonth() + 1; //獲取月份
        if(m < 10) m = '0' + m; 
        var d = dd.getDate();
        if(d < 10) d = '0' + d;
        return y + '-' + m + '-' + d;
       }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章