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

2022-09-15 11:42:14 字數 1379 閱讀 9958

原文:

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

這至少要花費20行以上的**來完成這件事,而通過j**ascript中的date物件,我們只需要1行**即可完成上述功能。

function

check(date)

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

let date1 = '2020-15-09';

new date(date1).getdate(); //

nandate1.substring(date1.length-2); //

"09"

nan 不等於 09let date1 = '2020-02-50';

new date(date1).getdate(); //

nandate1.substring(date1.length-2); //

"50"

nan 不等於 50let date1 = '2020-02-14';

new date(date1).getdate(); //

14date1.substring(date1.length-2); //

"14"

14 等於 "14"由此, 可以判斷 '2020-15-09' '2020-02-50' 都不是有效的日期

判斷日期的有效性

方法描述 去除字串前後的所有空格 引數 str 字串 function trim str 方法描述 日期格式的校驗 如 2008 02 29或者2008 02 29等這樣的才算合法 引數 datastr 日期的字串 function validatedate datastr d d var day ...

使用JS判斷日期的有效性

為了方便,這裡使用的是 yyyy mm dd 格式的日期。一般策略 將年月日分別取出,根據是否閏年和每月的日期進行判斷。function judgedate date else 使用js內建物件date進行判斷 將輸入的字串直接轉化為date物件,並根據是否轉化後的物件是否有效及重新拼接後是否和原來...

IP位址判斷有效性

描述 詳細描述 請實現如下介面 booli sipaddressvalid const char pszipaddr 輸入 pszipaddr 字串 輸出 true 有效的ip位址,false,無效的ip位址 約束輸入ip為 格式 字串兩端含有空格認為是合法ip 字串中間含有空格認為是不合法ip 類...