Подтвердить что ты не робот

Сравнивая два раза с Moment JS

У меня есть проблема, которая требует от меня взять два раза в 12-часовом формате и сравнить их, у нас есть момент .js, включенный в наш проект, и мы изначально думали, что это будет так же тривиально, как это:

var beginningTime = moment('8:45am');
var endTime = moment('9:00am');
console.log(beginningTime.isBefore(endTime)); //false???

Fiddle: http://jsfiddle.net/KyleMuir/M4R4z/

Есть ли что-то, что нам не хватает? Похоже, это не должно быть трудной проблемой. Когда мы выполняем любые функции момента на наших beginningTime или endTime, он просто говорит NAN

4b9b3361

Ответ 1

Если вы всегда имеете дело с временем в формате h:mma, вы можете указать его при разборе...

var beginningTime = moment('8:45am', 'h:mma');
var endTime = moment('9:00am', 'h:mma');
console.log(beginningTime.isBefore(endTime)); // true
console.log(beginningTime.toDate()); // Mon May 12 2014 08:45:00
console.log(endTime.toDate()); // Mon May 12 2014 09:00:00
<script src="https://cdn.jsdelivr.net/momentjs/2.13.0/moment.min.js"></script>

Ответ 2

8:45am и 9:00am являются недопустимыми датами

var beginningTime = moment('8:45am');
var endTime = moment('9:00am');
console.log(beginningTime.isValid(), endTime.isValid()) // FALSE

Вы должны использовать допустимый формат: http://momentjs.com/docs/#/parsing/string/

И они предполагают, что для согласованных результатов следует использовать http://momentjs.com/docs/#/parsing/string-format/

Eg.

moment("2010-10-20 4:30", "YYYY-MM-DD HH:mm"); // parsed as 4:30 local time

Ответ 3

Вы должны просто открыть консоль и попробовать сделать это вручную: moment ( "8:45 am" ). toDate()

Он дает неверную дату, поэтому вы не получаете ожидаемых результатов. Принимая во внимание, что "2014-05-15 08:45" дает вам дату.

Ответ 4

В соответствии с документацией вы объявляете переменную момента некорректно проверять разрешенные форматы

http://momentjs.com/docs/#/parsing/string/

Вместо этого вы можете использовать

var beginningTime = moment({
  h: 8,
  s: 45
});
var endTime = moment({
  h: 9,
  s: 0
});
console.log(beginningTime.isBefore(endTime)); //true
<script src="https://cdn.jsdelivr.net/momentjs/2.13.0/moment.min.js"></script>