2013-02-26 103 views
0

我得到了一块JS,需要验证并比较开始日期和时间以及结束日期和时间。JavaScript验证日期和时间

换句话说结束日期&时间不能少于开始日期和时间。

现在的问题。 我原本只接受24小时(军事)格式的时间。但现在让用户选择12小时还是24小时。

实施例13:00或1:00 PM

这一块代码的工作24小时时间格式,但不为12,它的12:00 PM引起该问题。

所以我需要适应这段代码工作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 – 2013-02-26 11:28:04

回答

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时刻。