jsが全体で、月の1日から数週間の合計を開始する計算します

最初のレンダリング

JSP月の選択

<入力名= "SDATE" ID = "SDATE" クラス= "layui入力" レイキー= "17" タイプ= "テキスト" />

カスケード週

<選択名= "EDATE" ID = "EDATE" レイフィルタ= "edateFilter"> </ select>の

$(関数(){
            initSelect(GETINFO( '<%= SDATE%>'));

            laydate.render({
                    elemは: '#sdate'、
                    タイプ'月'変更:関数(値、DATE、endDateに){//月は周ドロップダウンボックスを選択したときにリセットする
                        。$( '#のSDATE')のval( 値);
                        $( '#のlayui-laydate17'))(削除;. //削除
                        initSelect(GETINFO(値));
                    }
                });

});

関数initSelect(アレイ){
            layui.use([ '形態']、関数(){
                VAR形= layui.form;
               $( '#1 EDATE')(空);
            J <配列;(VARのJ = 0。長さ; J ++){
                   VAR OBJ =配列[J];
                   VARフラグ= isDateBetween( '<%= EDATE%>'、obj.from、obj.to);
                   VAR SS = '<オプション値= "' + + obj.from '==' + obj.to + '" ';
                   (フラグ){もし
                       、SS + ='選択'
                       CURR1 = obj.from; CURR2 = obj.to 
                   }
                   SS + ='>' + FORMATNAME(J、OBJ .from、obj.to)+ '</オプション>';
                       $(「#EDATE)付録(SS)。
               }
            Form.render(「SELECT」);
            });
       }
       / ** 
     *日付が間隔内の間隔で真リターンを決定し、そうでない場合はfalseに戻り 
     * @param日付ストリング日付列 
     間隔の開始日列をstartDateString * @param 
     インターバル終了日付列endDateString * @param 
     *ナンバー@Returns {} 
     * /  
    関数isDateBetween(日付ストリング、startDateString、endDateString)を{  
        (のisEmpty(日付ストリング)){IF  
            アラート( "空でない日付ストリング");  
            を返す;  
        }  
        IF( isEmpty(startDateString)){  
            アラート( "空でないstartDateString");  
            を返します;  
        }  
        IF(のisEmpty(endDateString)){  
            アラート( "endDateString不能为空")。  
            返します。  
        }  
        VARフラグ= FALSE。  
        VAR STARTFLAG =(dateCompare(日付ストリング、startDateString)<1)。  
        VaRのendFlag =(dateCompare(日付ストリング、endDateString)> -1)。  
        IF(STARTFLAG && endFlag){  
            フラグ= TRUE。  
        }  
        フラグを返します。  
    }。  
    関数dateCompare(日付ストリング、compareDateString){  
        IF(のisEmpty(日付ストリング)){  
            アラート( "日付ストリング不能为空")。  
            返します。  
        }  
        IF(のisEmpty(compareDateString)){  
            警告( "compareDateString不能为空");  
            返します。  
        }  
        VARのdateTime = dateParse(日付ストリング).getTime();  
        VAR compareDateTime = dateParse(compareDateString).getTime();  
        (compareDateTime> dateTimeの)場合は{  
            1を返します。  
        }(compareDateTime ==のdateTime)もしそうでなければ{  
            0を返します。  
        }他{  
            -1を返します。  
        }  
    }。  
    関数dateParse(日付ストリング){  
        VARのSEPARATOR_BAR = " - "。  
        VaRのSEPARATOR_SLASH = "/";  
        VAR SEPARATOR_DOT = "";  
        VAR DATEARRAY;  
        IF(dateString.indexOf(SEPARATOR_BAR)> -1){  
            DATEARRAY = dateString.split(SEPARATOR_BAR)。    
        }そうであれば(dateString.indexOf(SEPARATOR_SLASH)> -1){  
            DATEARRAY = dateString.split(SEPARATOR_SLASH)。  
        }他{  
            DATEARRAY = dateString.split(SEPARATOR_DOT)。  
        }  
        新しい日付を返す(DATEARRAY [0]、DATEARRAY [1] -1、DATEARRAY [2])。   
    }。  
       {(へ、からヴァル)関数FORMATNAME
           VAR列str = '第'。
           IF(ヴァル== 0){STR + = '一'。
           }そうであれば(ヴァル== 1){STR + = '二'。
           }そうであれば(ヴァル== 2){STR + = '三'。
           }そうであれば(ヴァル== 3){STR + = '四'。
           }そうであれば(ヴァル== 4){STR + = '五'。
           }そうであれば(ヴァル== 5){STR + = '六'。
           }そうであれば(ヴァル== 6){STR + = '七'。}
           STR + = '周(';
           VARのfromDateからは=新しい日付(から);
        STR + =(fromDate.getMonth()+ 1)+ '月' + fromDate.getDate()+ '日';
        STR + = ' - ';
        VAR toDateまでは=新しいDate()は、
        STR + =(toDate.getMonth()+ 1)+ '月' + toDate.getDate()+'日';
           + = STR '')。
           STRを返します。
       }
       関数GETINFO(ヴァル){
           VAR配列=新しいアレイ();
           VAR年=のparseInt(val.split( ' - ')[0]、10)、 

           VARさd =新しいDate();
           d.setFullYear(年、月-1、1);
           VAR W1 = d.getDay()。
           IF(W1 == 0)W1 = 7。
           d.setFullYear(年、月、0);
           VAR DD = d.getDate()。
           (もし!W1 = 1)、D1 = 7 - W1 + 2。
           他に、D1 = 1;
           week_count = Math.ceil((DD-D1 + 1)/ 7)。
           用(VAR i = 0; I <week_count; I ++){
               VAR月曜日= D1 + iが7×。
               VaRの日曜日=月曜日+ 6。
               VAR =年+から' - ' + formatD(月)+ ' - ' + formatD(月曜日);
               =「」へのVAR。
               もし(日<= DD){
                   = +の年' - ' + formatD(月ザ・)+ ' - ' + formatD(日曜日);
               }他{
                   d.setFullYear(年、月ザ・1、日曜日。);
                   d.getFullYearへ=()+ ' - ' + formatD (d.getMonth()+ 1)+ ' - ' + formatD(d.getDate());
               }
                場合は、最初の月曜日1か否かを判定(I == 0){//最初のサイクル結合していない場合Kuayue番号1は、円周含む
                    VARを= from.splitデータ( ' - ');
                    新しい=日付()VaRのMMは、新しい;
                      mm.setFullYear(DATA [0]、DATA [1] -1、DATA [ 2]);
                      VAR mm.getDate A =();
                    IF(A> 1){//ない数1件の。
                          VAR新しい新B =日付(); 
                          B.setFullYear(DATA [0]、DATA [1] -1、。-1)。
                          VaRのT = GetDay(B)。
                          VaRのF = GetMonday(B)。
                        VAR OBJ =新しいオブジェクト();
                        obj.from = F。obj.to = T;
                     (OBJ)のArray.push。
                    }
                }
                VAR OBJ =新しいオブジェクト();
                obj.from =から。obj.to =へ。
                (OBJ)のArray.push。
           }
           の配列を返します。
    }
       
       関数formatD(ヴァル){
           VAR DD =のparseInt(ヴァル、10)。
           IF(DD <10){
               リターン'0' + DD。
           }他{
               戻りDD + '。
           }
       }
       関数GetMonday(DD){
           VAR dd.getDay週=(); //週番号取得時間
           VARマイナス週週= - 1:?。6;
           dd.setDate(dd.getDate() -マイナス); //取得マイナス日前の日付
           VAR dd.getFullYear Y =();
           VAR dd.getMonthメートル=()+ 1; //月を取得
           (M <10)メートル= '0' + MのIF; 
           VAR D = dd.getDate ();
           IF(D <10)D = '0' + Dは、
           Y +を返す' - ' + M + ' - ' + D;
       }
       関数GetDay(DD){
            VAR dd.getFullYear Y =();
        VAR mを= dd.getMonth()+ 1; //取得月
        IF(M <10)メートル= '0' + M; 
        VARのDD = D.getDate();
        (D <10)、D =であれば'0' + D。
        戻りY + ' - ' + M + ' - ' + D。
       }

 

おすすめ

転載: blog.csdn.net/zhu_nana/article/details/82620517