2013-02-26 6 views
0

У меня есть часть JS, которая должна проверять и сравнивать дату и время начала с датой окончания и временем окончания.Javascript Validate Date & Time

Иными словами, дата окончания & не может быть меньше даты и времени начала.

Теперь проблема. Я изначально принимал только время в 24-часовом (военном) формате. но теперь позвольте пользователю выбирать между 12 часами или 24 часами.

Пример 13:00 или 1:00 вечера

Этот кусок кода работы 24-часовой формат времени, но не на 12, его 12:00 вечера, что вызывает проблему.

Поэтому мне нужно адаптировать этот кусок кода для работы в течение 12 часов или 24 часов, но я не уверен, как это сделать.

function validateStartEndTime() { 
     var date = document.getElementById("datepickerStart").value; 

     var dateEnd = document.getElementById("datepickerEnd").value; 

     if (!isValidDate(date)) { 
      alert("Not Valid Date"); 
      return false; 
     } 
     var start = document.getElementById("timepicker").value; 
     var end = document.getElementById("timepickerEnd").value; 

     var stDate = new Date(parse(date +" "+ start)); 
     var enDate = new Date(parse(dateEnd + " "+ end)); 
     var compDate = enDate - stDate; 
     if (compDate >= 0) 
      return true; 
     else { 
      alert("End time must be greater than Start Time "); 
      return false; 
     } 

    } 
+0

если PM выбран и часы меньше или равно 12 добавляют 12 к часам –

ответ

1

Вы могли бы написать функцию, которая преобразует время в 12-часовом формате времени в 24-часовом формате, что-то вроде:

function convertTo24HourFormatIfNeeded(timeString) { 
    var is12HourFormat = timeString.indexOf("M") !== -1; 
    if (is12HourFormat) { 
     var isPm = timeString.indexOf("PM") !== -1; 
     var timeStringNoSuffix = timeString.split(" ")[0]; 
     if (isPm) { 
      var hoursAndMinutes = timeStringNoSuffix.split(":"); 
      var hours = hoursAndMinutes[0]; 
      var convertedHours = (Number(hours) + 12); 
      var minutes = hoursAndMinutes[1]; 
      return convertedHours + ":" + minutes; 
     } else { 
      return timeStringNoSuffix; 
     } 
    } else { 
     return timeString; 
    } 
} 

Затем используйте его в коде:

var start = convertTo24HourFormatIfNeeded(document.getElementById("timepicker").value); 
var end = convertTo24HourFormatIfNeeded(document.getElementById("timepickerEnd").value); 
0

Если вы не неблагоприятные для использования внешних библиотек, я нашел MomentJs очень удобно работать с датами, и среди прочего он позволяет разобрать дату в определенный пользователем формат, так что вы могли бы построить вашу строку даты, соответствующую выбору пользователя AM/PM или 24-часовому формату, и подайте его на момент js.