2016-01-23 31 views
-1

我试图比较使用时刻JS两个日期,但是却得到了意想不到输出的意外行为: -瞬间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) 

我完全糊涂了。看来我错过了一些东西。

+4

从[文档](http://momentjs.com/docs/#/manipulating/add/):“**通过增加时间来改变原始时刻**。“ – Andreas

+0

@Andreas所以我们需要做一个day1的克隆? –

+2

我这么认为。 'var day2 = day1.clone()。add(“m”,500)'应该可以工作 – Andreas

回答

1

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

.add()器变化了原来的那一刻通过增加时间。

您必须首先克隆day1然后操纵这个克隆

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

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

因此,

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

返回true。