使用Javascript比较时间

时间:2010-12-10 07:09:49

标签: javascript jquery validation datetime

我的网页上有开始时间,开始日期和结束日期,结束时间。我需要确保如果开始日期和结束日期相等,那么结束时间必须大于开始时间,如果结束date大于开始日期,然后用户可以随时输入。如何实现此验证?

2 个答案:

答案 0 :(得分:6)

我强烈推荐Datejs之类的东西。这应该给你一个起点:

// get the values from your form
var startDate = $('input[name=startDate]').val(),
    endDate = $('input[name=endDate]').val(),
    startTime = $('input[name=startTime]').val(),
    endTime = $('input[name=endTime]').val()

如果您决定使用Datejs,则应使用Date.parse(startDate)解析输入字段中的值。查看Getting Started.如果您决定不使用DateJ,可以将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);
};

答案 1 :(得分: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日期对象的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