我有一个简单的验证,应该防止时间输入/输出不正确的值。因此,如果用户挑选例如:新日期()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