2012-09-05 58 views
1

我有兩個輸入框以格式「dd/mm/yyyy」獲取日期值。javascript日期驗證 - 檢查兩個日期

我必須爲商店創建優惠券,所以我必須檢查第一次約會應該從明天開始。前者爲 。如果今天是第5天,那麼第1天不應該在第6天之前。

和第二日期應該比第一日期至少大1天。如果用戶輸入第1個日期爲第10個月,那麼第2個日期不應該相同,或者在第10個月之前。

因此,如果用戶在2013年1月31日(2013年1月31日)輸入第一日期,則第二日期可以是第一日或第一日後的任何日期。所以我hvae也檢查日期驗證。 爲日期驗證我使用以下代碼 -

function chkdate(y,m,d) 
    { 
     var date = new Date(y,m-1,d); 
     month1 = date.getMonth()+1; 
     date1 =date.getDate(); 
     if(month1 <10) 
       { 
       month1 = "0"+month1; 
       } 
     if(date1 <10) 
       { 
       date1 = "0"+date1; 
       } 
     var convertedDate =""+date.getFullYear() + (month1) + date1; 
     var givenDate = "" + y + m + d; 
     return ((givenDate==convertedDate)?true:false); 
    } 

我正在callling上述功能的功能內 -

function generate_coupon() 
    { 
     var f_arr = from_date.split("/"); //from_date is from 1st input date value. 
    var f_day = f_arr[0]; 
    var f_month =f_arr[1]; 
    var f_year =f_arr[2]; 

     var t_arr = to_date.split("/"); //to_date is from 2nd input date value. 
    var t_day = t_arr[0]; 
    var t_month =t_arr[1]; 
    var t_year =t_arr[2]; 

     if (chkdate(f_year,f_month,f_day)== true && chkdate(t_year,t_month,t_day)== true) 
     { 

     } 
     else 
     { 
      alert('Enter Valid Date - dd/mm/yyyy'); 
     } 
    } 

在於,如果條件我要檢查兩個日期值 - 的第一日期值是從明天開始,第二日期值應該與第一天至少有一天不同。如果兩個條件都是真的,那麼我將生成一張優惠券,否則我會提醒無效日期。

我應該怎麼做?

+0

你應該看看[moment.js](http://momentjs.com/)或[datejs](http://www.datejs.com/)。日期操作可以真的很討厭^^ – Andreas

回答

0

寧願做這種類型的驗證,我認爲使用一些定義的代碼填充其他日期字段會更容易。並提出這些領域不可編輯

+0

是的。這種類型也是我們可以做到的。但以上是客戶需要的第一要務。如果我沒有得到任何解決方案,那麼我必須這樣做。 – user1638279

0

法裏德做了一個好點的,但如果您的基準日是動態的,這樣的事情應該工作:

function isValidInput(date1, date2) { 
    return date2 >= getNextDate(date1); 
} 

function getNextDate(date) { 
    // The number of milliseconds in one day 
    var ONE_DAY = 1000 * 60 * 60 * 24; 

    var date_ms = date.getTime(); 
    var nextDate_ms = date_ms + ONE_DAY; 

    var nextDate = new Date(nextDate_ms); 

    // Make sure to get rid of time, so that it's always at 00:00:00 hour. 
    return new Date(nextDate.getYear(), nextDate.getMonth(), nextDate.getYear()); 
} 
0
function checkDates(d1, d2) { 
    if (d1 instanceof Date && d2 instanceof Date) { 
     var today = new Date(); 
     today.setHours(0, 0, 0, 0); 
     if (date1.getTime() < (today.getTime() + 86400000)) { 
      return "First date should be after today"; 
     } 
     if (date2.getTime() < (date1.getTime() + 86400000)) { 
      return "Second date should be after First date"; 
     } 
     return "Dates are valid"; 
    } 
    return "One or more invalid date"; 
} 



var date1Str = "6/9/2012"; 
var date2Str = "7/9/2012"; 

var date1Arr = date1Str.split("/"); 
var date2Arr = date2Str.split("/"); 

var date1 = new Date(date1Arr[2], date1Arr[1] - 1, date1Arr[0]); 
var date2 = new Date(date2Arr[2], date2Arr[1] - 1, date2Arr[0]); 

alert(checkDates(date1, date2)); 
0

試試這個

function generate_coupon() { 
    var from_date = document.getElementById("fromDate"); 
    var to_date = document.getElementById("toDate"); 

    var from = new Date(from_date.value); 
    var to = new Date(to_date.value);  
    var today = new Date(); 
    var tomorrow = new Date(new Date().getTime() + 24 * 60 * 60 * 1000); 
    if (from >= tomorrow && to > from) { 

    } else { 
     alert('Enter Valid Date - dd/mm/yyyy'); 
    } 
}​