Сравнение времени с использованием Javascript - PullRequest
2 голосов
/ 10 декабря 2010

У меня есть время начала, дата начала и дата окончания, время окончания на моей веб-странице. Я должен убедиться, что если дата начала и дата окончания совпадают, то время окончания должно быть больше времени начала и, если конецдата больше даты начала, после чего пользователь может ввести ее в любое время. Как я могу выполнить эту проверку?

Ответы [ 2 ]

6 голосов
/ 10 декабря 2010

Я очень рекомендую что-то вроде 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. Если вы решите не использовать DateJs, вы можете добавить getTime () в var startTime. (например, - 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 голосов
/ 10 декабря 2010

Хорошо знать, как все работает, и вы могли бы извлечь выгоду из его построения самостоятельно, не завися от структуры. Если вы хотите попробовать это, предполагая, что у вас есть простые строки для ваших дат и времени, вы можете начать с этого:

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);

Вы можете улучшить это, проверив недопустимые значения даты. Проверьте ссылку W3C на объект JavaScript Date для этого: 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...