兩行代碼輕松搞定JavaScript日期驗(yàn)證
我們通常在 JavaScript 中驗(yàn)證日期,基本的思路大概是,先判斷年月日是否有效,再判斷當(dāng)月是否有當(dāng)日,比如一些月份沒有 31 日,平年二月沒有 29、30 日,閏年二月沒有 30 日等等。
偶然間發(fā)現(xiàn)一個(gè)技巧,能判斷以上所有的情況。除去賦值代碼,實(shí)際代碼僅兩行。
其實(shí)這個(gè)技巧也很簡(jiǎn)單,通過實(shí)例化 Date 對(duì)象來(lái)生成一個(gè)合法的日期,再去對(duì)比年月日是否相等,以驗(yàn)證日期是否合法。
var originalYear = 2016; var originalMonth = 12; var originalDay = 32; var date = new Date(originalYear, originalMonth - 1, originalDay); var year = date.getFullYear(); var month = date.getMonth() + 1; var day = date.getDate(); console.log(year + '-' + month + '-' + day); // 2017-1-1
因?yàn)?12 月沒有 32 日,所以輸出的日期就是第二年的 1 月 1 日,年月日不相等,所以 2016 年 12 月 32 日不是一個(gè)合法的日期。
具體的實(shí)現(xiàn)代碼:
var validateDate = function (originalYear, originalMonth, originalDay) { var date = new Date(originalYear, originalMonth - 1, originalDay); var year = date.getFullYear(); var month = date.getMonth() + 1; var day = date.getDate(); return year == originalYear && month == originalMonth && day == originalDay; }
測(cè)試:
console.log(validateDate()); // false console.log(validateDate(-1, -1, -1)); // false console.log(validateDate('', '', '')); // false console.log(validateDate([], [], [])); // false console.log(validateDate({}, {}, {})); // false // 平年二月。 console.log(validateDate(2015, 2, 29)); // false // 閏年二月。 console.log(validateDate(2016, 2, 29)); // true console.log(validateDate(2016, 6, 30)); // true console.log(validateDate(2016, 6, 31)); // false console.log(validateDate('2016', '01', '01')); // true
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- javascript日期驗(yàn)證之輸入日期大于等于當(dāng)前日期
- JS驗(yàn)證日期的格式Y(jié)YYY-mm-dd 具體實(shí)現(xiàn)
- javascript 驗(yàn)證日期的函數(shù)
- JS 日期驗(yàn)證正則附asp日期格式化函數(shù)
- js實(shí)現(xiàn)獲取兩個(gè)日期之間所有日期的方法
- js日期插件dateHelp獲取本月、三個(gè)月、今年的日期
- 獲取陰歷(農(nóng)歷)和當(dāng)前日期的js代碼
- JS獲取時(shí)間的相關(guān)函數(shù)及時(shí)間戳與時(shí)間日期之間的轉(zhuǎn)換
- JS動(dòng)態(tài)日期時(shí)間的獲取方法
- js獲取日期:昨天今天和明天、后天
- JS獲取及驗(yàn)證開始結(jié)束日期的方法
相關(guān)文章
一個(gè)簡(jiǎn)單的JS時(shí)間控件示例代碼(JS時(shí)分秒時(shí)間控件)
這篇文章主要介紹了一個(gè)簡(jiǎn)單的JS時(shí)間控件示例代碼(JS時(shí)分秒時(shí)間控件)。需要的朋友可以過來(lái)參考下,希望對(duì)大家有所幫助2013-11-11基于javascript實(shí)現(xiàn)全屏漂浮廣告
這篇文章主要介紹了基于javascript實(shí)現(xiàn)全屏漂浮廣告,光標(biāo)懸浮廣告停止移動(dòng),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-03-03JS+CSS實(shí)現(xiàn)滾動(dòng)數(shù)字時(shí)鐘效果
本篇文章教給大家用JS代碼配合CSS樣式來(lái)實(shí)現(xiàn)滾動(dòng)時(shí)鐘的動(dòng)畫效果,一起來(lái)學(xué)習(xí)下。2017-12-12利用Bootstrap Multiselect實(shí)現(xiàn)下拉框多選功能
這篇文章主要介紹了利用Bootstrap Multiselect實(shí)現(xiàn)下拉框多選功能,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧2019-04-04js判斷樣式className同時(shí)增加class或刪除class
用正則表達(dá)式判斷多個(gè)class之間是否存在真正的class(前后空格的處理)然后增加class刪除class,本文給予實(shí)現(xiàn)方法,感興趣的朋友可以了解下,或許對(duì)你有所幫助2013-01-01