在浏览了一些其他 MomentJS 问题和答案之后,我仍然对如何使用 moment 进行简单比较感到困惑两个不同的时间.
我不需要(想要)考虑日期/日期。
我的用例是这样的:
我正在从配置文件中读取时间表(开始/结束时间)。这是使用 Node.js 完成的
开始时间 = 下午 6:30
结束时间 = 凌晨 3:30
var currentTime= moment(); // e.g. 11:00 pm
var starttime = moment('06:30 pm', "HH:mm a");
var endtime = moment('03:30 am', "HH:mm a");
amIBetween = currtime.isBetween(starttime , endtime);
console.log(amIBetween); // returns false
从技术上讲,我的场景持续了两天,我明白为什么它是错误的。
我需要(期望)时刻返回 TRUE - 即当前时间在开始时间和结束时间之间并且落在该范围内。
我是否需要检查上午 12 点之后的时间,然后添加一天以使检查生效?
完成此任务的任何其他建议。我查看了具有“包含”功能的时刻范围,但也有类似的问题。
我发现很难相信它是如此复杂,但也许它是:\
--
以下是跨天出现的问题的进一步澄清,即使试图更明确:
var currentTime= moment('11:00p', "HH:mm a");
var startTime = moment('06:00p', "HH:mm a");
var endTime = moment('03:30a', "HH:mm a");
currentTime.toString(); //"Fri Oct 28 2016 23:00:00 GMT-0400"
startTime.toString(); // "Fri Oct 28 2016 18:00:00 GMT-0400"
endTime.toString(); // "Fri Oct 28 2016 03:30:00 GMT-0400"
currentTime.isBetween(startTime, endTime); // false
currentTime.isAfter(endTime) && currentTime.isBefore(startTime); //false
currentTime.isAfter(startTime) && currentTime.isBefore(endTime); //false
似乎很明显他们是假的,因为day/date是按时刻考虑的。这就是我想要解决的问题。
以下内容将起作用:
endTime.add(1, "days");
currentTime.isBetween(startTime, endTime); // TRUE
然而,这意味着我需要检查 START TIME 是否在上午 12 点之前 && ENDTIME 是否在 12 点之后,然后在 ENDTIME 上添加 1 天。克鲁奇?