[Javascript]簡單好用的判斷日期格式和日期期間

檢查輸入的日期格式和日期範圍

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就沒辦法檢查,但如果要求不高,這樣做法蠻簡單的就是

參考網站:網站1網站2(這個範例做的蠻好的,值得參考)

檢查日期區間

下面這是我找到很簡單的做法,先將字串透過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;
    }
}

Leave a Reply

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *