bootstrap-daterangepicker雙日歷控件開始日期選擇問題


在做項目的時候,有這樣一個需求,需要選擇時間段,於是在網上找了bootstrap的雙日歷時間控件daterangepicker控件,要選取時間段的年月來與后台進行數據交互,時間控件如下圖所示:

關於控件的初始化在這里就不做介紹了,初始化完成后選擇時間,點擊確定按鈕會觸發控件的回調函數會把你選擇的時間傳給你,如圖:start是選擇的開始時間,end是選擇的結束時間。在這里對start和end要做轉換才可以使用。本身以為這樣挺好的,滿足了需求。后來在測試的過程中,發現當開始時間選擇每月1日的時候,實際取的是選擇的前一天,比如我選擇的開始時間是4月1日,實際取得的是3月31日,導致獲取的數據不一致。然后針對開始時間,針對項目的需求就需要對開始時間做處理,由於項目只需要傳遞年月,所以對這兩個做處理,大致思路是這樣:首先選擇1日后,要看返回的前一天是31、30、29還是28,因為每年的1、3、5、7、8、10、12月是31天,而4、6、9、11月是30天,2月份要看當前年份是否是閏年,分為29天或28天。然后當返回日期是31或者30的時候,當月份是12月的時候還需要把年份加1,12月要變成01月,其他的是需要月份加1即可,最后當返回日期是29或28的時候,要判斷是否是2月,因為這種情況下只有2月才需要改變月份,這里需要判斷是否是閏年,因為閏年2月有29天,判斷成立后直接把月份改成03。以上所描述的適用於開始時間是1日的情況。下面是我對於以上思路的實現:

//開始時間選擇1號時處理
function specialDate(startArray){
    if(startArray[2].substring(0,2)==31){
        if(startArray[1]=="01" || startArray[1]=="03" || startArray[1]=="05" || startArray[1]=="07" || startArray[1]=="08" || startArray[1]=="10" || startArray[1]=="12"){
            if(startArray[1]=="12"){
                startArray[0] = parseInt(startArray[0])+1;
                startArray[1]='01';
            }else{
                startArray[1] = parseInt(startArray[1])+1;
                if(startArray[1]<10){
                    startArray[1] = '0'+startArray[1];
                }
            }
            
        }
    }else if(startArray[2].substring(0,2)==30){
        startArray[1] = parseInt(startArray[1])+1;
        if(startArray[1]<10){
            startArray[1] = '0'+startArray[1];
        }
    }else if(startArray[2].substring(0,2)==29 || startArray[2].substring(0,2)==28){
        if(startArray[1] == 02){
            //判斷是否是閏年
            if((startArray[0] % 4 == 0) && (startArray[0] % 100 != 0 || startArray[0] % 400 == 0)){
                if(startArray[2].substring(0,2)==29){
                    startArray[1] = "03";
                }
            }else{
                startArray[1] = "03";
            }
            
        }
    }
}

代碼注釋不多,有不懂或者不理解的歡迎留言~

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM