我有一個簡單的驗證,應該防止時間輸入/輸出不正確的值。因此,如果用戶挑選例如:新日期()12/24小時格式JavaScript?
12:30 PM = Time In
和12:15 PM = Time Out
他們將得到屏幕'Time Out can not be less or equal than Time In'
上的消息。
我的驗證工作正常,但在一個案例。例如用戶隨到隨:
Time In: 12:30 PM
和Time Out: 1:00 PM
他們點擊保存和警報消息彈出。我發現我的代碼是這樣產生的:
Time In: Thu Sep 15 2016 00:29:00 GMT-0500 (Central Standard Time)Time Out: Wed Sep 14 2016 13:29:00 GMT-0500 (Central Standard Time)
我使用JavaScript爲Time In Time和Time out值創建新日期。看起來我的代碼在new Date()
中設置00爲12 PM小時。所以我的問題是如何防止這個問題,或者有任何其他方式在JavaScript中解決這個問題。這裏是我的代碼,在那裏我在轉換到新的Date()接受兩個輸入值:
var timeIn = document.getElementById('timeIn').value;
var timeOut = document.getElementById('timeOut').value;
var today = new Date(),
curYear = today.getFullYear(),
curDate = today.getDate(),
curMonth = today.getMonth(),
defaultTimeIn = timeIn.split(":"),
defaultTimeOut = timeOut.split(":"),
defaultHourIn = parseInt(defaultTimeIn[0], 10),
defaultHourOut = parseInt(defaultTimeOut[0], 10),
defaultMinAMPMIn = defaultTimeIn[1].split(" "),
defaultMinAMPMOut = defaultTimeOut[1].split(" "),
defaultMinIn = defaultMinAMPMIn[0],
defaultMinOut = defaultMinAMPMOut[0],
defaultAMPMIn = defaultMinAMPMIn[1],
defaultAMPMOut = defaultMinAMPMOut[1];
if (defaultAMPMIn == "PM") {
defaultHourIn += 12; //hours are in 24-hour format (0-23)
}
if (defaultAMPMOut == "PM") {
defaultHourOut += 12; //hours are in 24-hour format (0-23)
}
var compTimeIn = new Date(curYear, curMonth, curDate, defaultHourIn, defaultMinIn);
var compTimeOut = new Date(curYear, curMonth, curDate, defaultHourOut, defaultMinOut);
if (compTimeIn >= compTimeOut) {
alert("'Time Out' can't be less or equal to 'Time In'");
}
將與不同的區域設置這項工作是否正常? – ppeterka
@ppeterka我不確定。 –
你可以看看http://momentjs.com/。這可能是一個最好的庫,用於處理javascript中的日期/時間。你會爲它節省很多麻煩。 – Paulooze