如何使用moment.js比较两个日期

时间:2016-12-16 17:03:07

标签: javascript date momentjs

我正在尝试比较两个日期时间值,因为我想要做的是检查时间是否过去了

我试图使用两种方法。使用函数isBefore

for (var i = 0; i < vm.conferencesArray.length; i++) {

   if (moment(vm.conferencesArray[i].fecha).format('MMMM Do YYYY') == moment().format('MMMM Do YYYY')) {
    var a = moment('2016-03-12 ' + horaActual[4]).format('MMMM Do YYYY, h:mm:ss a');
    var b = moment('2016-03-12 ' + vm.conferencesArray[i].horaInicio).format('MMMM Do YYYY, h:mm:ss a');

    console.log(a.isBefore(b));
    } else {
      console.log("the event is not today")
      }
}

并使用if,但它没有用

for (var i = 0; i < vm.conferencesArray.length; i++) {
   if (moment(vm.conferencesArray[i].fecha).format('MMMM Do YYYY') == moment().format('MMMM Do YYYY')) {
      if (moment('2016-03-12 ' + horaActual[4]).format('MMMM Do YYYY, h:mm:ss a') > moment('2016-03-12 ' + vm.conferencesArray[i].horaInicio).format('MMMM Do YYYY, h:mm:ss a')) {
        console.log("next conference");
      } else {
           console.log("previous conference");
        }
   } else {
        console.log("the conference is not today");
     }
}

1 个答案:

答案 0 :(得分:0)

你在做......

moment(s).format(f)

Thate使用给定的输出格式创建字符串。在普通的JS字符串上没有isBefore函数,因此您将收到错误。

如果您尝试指定输入字符串的格式,即:

moment(s, f)

然后您将拥有一个moment对象,您可以调用isBefore以及其中存在的其他函数。

此外,在检查两个值是否在同一天时,我会使用startOf('day')而不是格式化字符串。