【问题标题】:Moment js :- Getting Unexpected behaviourMoment js :- 出现意外行为
【发布时间】:2016-04-30 08:46:47
【问题描述】:

我正在尝试使用 moment js 比较两个日期,但得到了意外的输出:-

var day1 = moment("24-01-2016 19:29","DD-MM-YYYY HH:mm");
var day2 = day1.add('m', 500);
document.writeln(day1.isBefore(day2,'minute'));
output : false (Expected to be true)
document.writeln(day1.isSame(day2,'minute'));
output : true (Don't know why)

我完全糊涂了。看来我错过了什么。

【问题讨论】:

  • 来自docs:“通过增加时间来改变原始时刻。”
  • @Andreas 所以我们需要克隆 day1 吗?
  • 我想是的。 var day2 = day1.clone().add("m", 500) 应该可以工作

标签: javascript date time compare momentjs


【解决方案1】:

我认为问题在于使用时刻正在创建一个对象。由于对象是通过引用传递的,因此 day1 和 day2 都指向同一个对象。

因此,

document.writeln(day1.isSame(day2,'minute'));

返回真。

【讨论】:

    【解决方案2】:

    任何操作方法(包括.add())都会改变原始对象。

    .add(): 通过增加时间来改变原始时刻

    您必须先克隆 day1,然后再操作此克隆

    var day2 = day1.clone().add("m", 500);
    // or
    var day2 = moment(day1).add("m", 500);
    

    【讨论】:

      猜你喜欢
      • 2018-02-13
      • 1970-01-01
      • 1970-01-01
      • 2021-01-20
      • 2018-11-26
      • 1970-01-01
      • 2017-07-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多