Момент JS, как установить между и равно между 2 датами? - PullRequest
0 голосов
/ 22 мая 2019

Привет, я хотел бы проверить, находится ли данная дата между 2 датами и часами, конечно.Так что, если мы проверим, если 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);

Так что я проверяю, если этомежду, но работает странно.

Если я установлю часы startDayTime = 14:59 и endDayTime = 17:00, а timeSlotStartTime - 14:15, это все равно даст мне истину. (это большая проблема)

и если timeSlotStartTime = 17:00 дает мне ложь (что я хочу, чтобы дать мне истину)

Есть ли возможность, что я могу проверить между и равными в течение 2 минут?

спасибо

Ответы [ 2 ]

0 голосов
/ 22 мая 2019

isBetween принимает третий параметр (минуты, часы, дни и т. Д.) И четвертый параметр [] для включения инклюзивности

Вы должны передать третий параметр как 'minutes' , так как вы сравниваете минуты

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

Также isBetween матч является эксклюзивным.

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

Версия 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
0 голосов
/ 22 мая 2019

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

Вы можете использовать 4-й аргумент для включения ребер

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

Где квадратные скобки означают «включить этот конец», а круглые скобки означают «исключить этот конец»

...