js 簡單有效判斷日期有效性(含閏年)


原文:https://zhidao.baidu.com/question/1701946584925153620.html

  

要想精確驗證,最容易想到的方法就是通過月份判斷日期是否合法(1~28/29/30/31),你可以用一個數組表示每月的天數,如daysInMonth=[31,28,31,30,31,30,31,31,30,31,30,31],但你會發現daysInMonth[1]這個值可能是28或29,你又要寫一個判斷閏年的函數來解決這個問題......

這至少要花費20行以上的代碼來完成這件事,而通過javascript中的Date對象,我們只需要1行代碼即可完成上述功能。

function check(date){
    return (new Date(date).getDate()==date.substring(date.length-2));
}

date為一個待檢查的類日期字符串(如2013-01-01、2013/01/01、2013/01/32、2013/02/29),不論這個字符串是否正確

通過新建的Date對象(new Date(date)),可以識別出該日期是否正確,如果不正確則返回Invalid Date

但這樣會有一個bug,當日期的值在1-31之間,new Date總返回一個新的對象,不論該月份是否存在這個日期(如2013-02-30將返回日期對象Sat Mar 02 2013 08:00:00 GMT+0800 (中國標准時間)),返回結果是下個月的日期而不報錯

所以要用getDate()方法獲取日期(new Date('2013-02-30')對象的getDate()方法將返回2)

date.substring(date.length-2)會獲取到字符串最后兩位也就是日期的部分,這與Date對象的日期部分做比較,如果相等則說明日期有效,否則為無效日期

如果日期無效則'=='左邊值為NaN,右邊無論是什么(''、null、undefined、NaN等)結果都為false


免責聲明!

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



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