2010-12-10 90 views
2

我在我的網頁上有一個開始時間,開始日期和結束日期,結束時間。我需要確保如果開始日期和結束日期相等,那麼結束時間必須大於開始時間如果結束日期大於開始日期,則用戶可以隨時輸入。如何才能實現此驗證?使用Javascript比較時間

+0

怎麼樣使用jquery'date插件... – kobe 2010-12-10 07:16:43

+0

是他們`Date`的? – 2010-12-10 07:16:59

+0

這個問題是接近你的問題http://stackoverflow.com/questions/833997/end-date-greater-than-start-date-jquery-validation – kobe 2010-12-10 07:19:48

回答

6

我會極力推薦類似Datejs的東西。這應該不過給你一個起點:

​​

如果你決定使用Datejs你應該使用解析從Date.parse(startDate)輸入字段的值。查看Getting Started.如果您決定不使用DateJs,則可以將getTime()附加到startTime var。 (例如 - endTime.getTime() < startTime.getTime()

var error = ''; 

// if the start date is after the end date 
if (startDate > endDate){ 
    var error = error + 'Your start date is after your end date.'; 
} 
// if the start date and end date are the same -- and end time is before the start time 
else if(startDate == endDate && endTime < startTime){ 
    var error = error + 'Your end time is before your start time.'; 
}; 

// handle any errors 
if(error.length){ 
    alert(error); 
}; 
3

它的好,知道的東西是如何工作的,你可以從這個自己構建不依賴於一個框架中受益。如果您想嘗試一下,假設你有你的日期和時間簡單的字符串,你可以用這個啓動:

var dateStart = "Oct 13, 2010"; 
var timeStart = "10:13"; 
​​​​​​var dateEnd = "Nov 11, 2011"; 
var timeEnd = "14:56"; 

var startDate = new Date(dateStart + " " + timeStart); 
var endDate = new Date(dateEnd + " " + timeEnd); 

alert(startDate > endDate); 

對於真正的代碼中看到http://jsbin.com/oponu3/edit

如果你只是用這個來比較的時候,那麼這將工作:

var myDate = "Oct 13, 2010"; 
var timeStart = "10:13"; 
var timeEnd = "14:56"; 

var startDate = new Date(myDate + " " + timeStart); 
var endDate = new Date(myDate + " " + timeEnd); 

alert(startDate > endDate); 

你可以通過檢查非法日期值來加強這一點。檢查JavaScript的Date對象這樣做的W3C參考:http://www.w3schools.com/js/js_obj_date.asp

// calculate difference (added 2012-04-04) 
var milliseconds = Math.abs(startDate.getTime() - endDate.getTime()); 
var seconds = milliseconds/1000; 
var minutes = seconds/60; 
var hours = minutes/60; 
// etc etc etc