檢查輸入的日期格式和日期範圍
function ValidateDate(dtValue) { var dtRegex = new RegExp(/^[0-9]{4}[/\-](0[1-9]|1[012])[/\-](0[1-9]|[12][0-9]|3[01])$/); return dtRegex.test(dtValue); }
這個函數可以檢查以下日期格式
2016/01/05 -true
2016-01-05 -true
2016\01\05 -true
2016-1-5 -false
2016-13-01 -false
2016-12-35 -false
2016-02-30 –true
這種做法只是檢查字元的範圍而已,像2月30就沒辦法檢查,但如果要求不高,這樣做法蠻簡單的就是
檢查日期區間
下面這是我找到很簡單的做法,先將字串透過split()分割,再產生時間物件,然後再做比較
var parts =start_date.split('-'); var sd = new Date(parts[0],parts[1]-1,parts[2]);
注意:月份減1是因為產生物件時,輸入0代表1月,所以我們輸入的月份要減1
以下完整檢查日期程式碼
function check_date(start_date,end_date) { var dtRegex = new RegExp(/^[0-9]{4}[-](0[1-9]|1[012])[-](0[1-9]|[12][0-9]|3[01])$/); if(!dtRegex.test(dtValue)) { alert("日期格式或範圍不正確") return false; } var parts =start_date.split('-'); var sd = new Date(parts[0],parts[1]-1,parts[2]); parts = end_date.split('-'); var ed = new Date(parts[0],parts[1]-1,parts[2]); if(sd < ed)return true; else{ alert("結束日期不得小於開始日期"); return false; } }