Moment JS 如何设置介于 2 个日期之间且相等?

ROK*_*OKI 5 javascript momentjs

嗨,我想检查给定的日期是否在两个日期之间,当然还有几个小时。因此,如果我们检查 13:00 是否在 13:00 和 15:00 之间,我想得到正确的结果。

我有这个代码:

 let timeSlotStartTime = moment.utc(timeSlot.startTime);
    let startDayTime =  moment.utc(timeSlotStartTime.format('YYYY-MM-DD') + "T" + moment.utc(condition.parameters.timeFrom).format('HH:mm:00'));
    let endDayTime =  moment.utc(timeSlotStartTime.format('YYYY-MM-DD') + "T" + moment.utc(condition.parameters.timeTo).format('HH:mm:59'));
    return timeSlotStartTime.isBetween(startDayTime, endDayTime);
Run Code Online (Sandbox Code Playgroud)

所以我正在检查它是否介于两者之间,但它的工作原理很奇怪。

如果我设置 startDayTime = 14:59 和 endDayTime = 17:00 并且 timeSlotStartTime 是 14:15 它仍然给我真实的时间。(这是更大的问题)

如果 timeSlotStartTime = 17:00 给我假(我想给我真)

有没有可能我可以在 2 分钟内检查和相等?

谢谢

TKo*_*KoL 18

https://momentjscom.readthedocs.io/en/latest/moment/05-query/06-is-between/

您可以使用第四个参数来包含边

moment('2016-10-30').isBetween('2016-10-30', '2016-12-30', null, '()'); //false
moment('2016-10-30').isBetween('2016-10-30', '2016-12-30', null, '[)'); //true
moment('2016-10-30').isBetween('2016-01-01', '2016-10-30', null, '()'); //false
moment('2016-10-30').isBetween('2016-01-01', '2016-10-30', null, '(]'); //true
moment('2016-10-30').isBetween('2016-10-30', '2016-10-30', null, '[]'); //true
Run Code Online (Sandbox Code Playgroud)

方括号表示“包括这一端”,括号表示“排除这一端”


Has*_*ang 7

isBetween采用第三个参数(分钟、小时、天等)和第四个参数[]来包含包容性

您应该将第三个参数作为“分钟”传递,因为您正在比较分钟

var timeSlotStartTime  = moment({ hour:14, minute:15 });
var startDayTime  = moment({ hour:14, minute:59 });
var endDayTime   = moment({ hour:17, minute:00 });


var result = timeSlotStartTime.isBetween(startDayTime, endDayTime, 'minutes', '[]');

console.log(result); // false
Run Code Online (Sandbox Code Playgroud)

isBetween比赛也是独一无二的。

moment('2010-10-20').isBetween('2010-01-01', '2012-01-01', 'year'); // false as it is exclusive
Run Code Online (Sandbox Code Playgroud)

2.13.0 版本引入了包容性。A[表示包含一个值。A(表示排除。如果使用包容性参数,则两个指标都必须通过。

moment('2016-10-30').isBetween('2016-10-30', '2016-12-30', null, '()'); //false
moment('2016-10-30').isBetween('2016-10-30', '2016-12-30', null, '[)'); //true
moment('2016-10-30').isBetween('2016-01-01', '2016-10-30', null, '()'); //false
moment('2016-10-30').isBetween('2016-01-01', '2016-10-30', null, '(]'); //true
moment('2016-10-30').isBetween('2016-10-30', '2016-10-30', null, '[]'); //true
Run Code Online (Sandbox Code Playgroud)