2013-02-26 91 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時刻。