12 AM
被视为第二天
timeone = "5/18/2017 01:00 AM"
currenTime = "5/18/2017 05:55 AM"
timetwo = "5/18/2017 12:00 AM"
我看到condition
在时间12:00 AM
时失败,我该如何处理呢
案件?
timeone.isBefore(currentTime) => passes
currentTime.isBefore(timetwo) => fails
if (timeone.isBefore(currentTime) && currentTime.isBefore(timetwo)) {
}
更新
var timeone = moment(time1, 'MM/DD/YYYY hh:mm a');
var timetwo = moment(time2, 'MM/DD/YYYY hh:mm a');
var currentTime = moment(currentTime, 'MM/DD/YYYY hh:mm a');
答案 0 :(得分:6)
“12:00 AM”和“12:00 PM”在技术上是模棱两可的,因为AM表示“中午之前”,PM表示“中午之后”。由于中午既不在中午之前也不在中午之后,午夜可以被认为是一天的结束或下一天的开始,两个标签都不合适。
然而,这是一个非常常见的解释,即12:00 AM表示午夜(00:00表示24小时表示法),12:00 PM表示中午(12点钟表示24小时表示法)。 Wikipedia has a section on various interpretations
这是您的图书馆使用的解释,所以“5/18/2017 12:00 AM”=“5/18/2017 00:00”,这显然是在“2017/5/18 05:55 AM之前” ”
如果您的用户始终期望相反的解释,您可以预先处理输入以交换值。但是,验证失败可能会更安全并强迫他们进入“中午12点”,甚至完全拒绝“12:00”并让他们进入“12:01 PM”,这是(我认为)明确无误。 / p>
答案 1 :(得分:2)
currenTime =“5/18/2017 05:55 AM”
timetwo =“5/18/2017 12:00 AM”
currentTime.isBefore(timetwo)=>失败
当你说“失败”时你的意思是返回false - 这是预期的。凌晨5:55在午夜之前不因为午夜是当天的开始,而不是当天的结束。