片刻js: - 出现意外行为

时间:2016-01-23 21:13:34

标签: javascript date time compare momentjs

我尝试使用时刻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)

我完全糊涂了。我似乎错过了一些东西。

2 个答案:

答案 0 :(得分:1)

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

.add() 通过添加时间来突变原始时刻

您必须首先克隆day1,然后操纵此克隆

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

答案 1 :(得分:0)

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

因此,

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

返回true。