2010-12-10 55 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