Sha*_*ane 3 javascript momentjs
12 AM
被认为是第二天
timeone = "5/18/2017 01:00 AM"
currenTime = "5/18/2017 05:55 AM"
timetwo = "5/18/2017 12:00 AM"
Run Code Online (Sandbox Code Playgroud)
我发现时间到了这个condition
失败了12:00 AM
,我该如何处理这个案子呢?
timeone.isBefore(currentTime) => passes
currentTime.isBefore(timetwo) => fails
if (timeone.isBefore(currentTime) && currentTime.isBefore(timetwo)) {
}
Run Code Online (Sandbox Code Playgroud)
更新:
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');
Run Code Online (Sandbox Code Playgroud)
"12:00 AM"和"12:00 PM"在技术上是模棱两可的,因为AM表示"中午之前",PM表示"中午之后".由于中午既不是在中午之前也不是中午之后,午夜可以被认为是一天的结束或下一天的开始,两个标签都不合适.
然而,这是一个非常普遍的解释,即12:00 AM表示午夜(00:00表示24小时表示法),12:00 PM表示中午(12点钟表示24小时表示法).维基百科有一个关于各种解释的部分.
这是您的图书馆使用的解释,所以"5/18/2017 12:00 AM"="5/18/2017 00:00",这显然是在"2017/5/18 05:55 AM"之前.
如果您的用户始终期望相反的解释,您可以预先处理输入以交换值.但是,验证失败可能更安全,并强迫他们进入"中午12点",甚至完全拒绝"12:00"并让他们进入"12:01 PM",这是(我认为)明确无误.
currentTime = "5/18/2017 05:55 AM"
timetwo = "5/18/2017 12:00 AM"
currentTime.isBefore(timetwo) => 失败
当你说“失败”时,你的意思是返回 false - 这是预期的。凌晨 5:55 并不是午夜之前,因为午夜是一天的开始,而不是一天的结束。
归档时间: |
|
查看次数: |
1437 次 |
最近记录: |