我正在使用javascript setDate
方法做一些日期操作,因此我的值originalDate
值丢失。下面是我想:setDate方法覆盖原始日期
var originalDate = new Date();
var newDate = originalDate;
newDate.setDate(15);
我想那应该setDate()
只更新newDate
变量,而不是originalDate。我怎样才能做到这一点。
谢谢。
我正在使用javascript setDate
方法做一些日期操作,因此我的值originalDate
值丢失。下面是我想:setDate方法覆盖原始日期
var originalDate = new Date();
var newDate = originalDate;
newDate.setDate(15);
我想那应该setDate()
只更新newDate
变量,而不是originalDate。我怎样才能做到这一点。
谢谢。
你的问题是,你要newDate
分配的originalDate
参考,所以在相同的Date
对象它们都指向。
另一种可能性:
的Javascript
function cloneDate(dateObject) {
return new Date(dateObject.valueOf());
}
var originalDate = new Date(),
newDate = cloneDate(originalDate);
newDate.setDate(15);
console.log(originalDate);
console.log(newDate);
输出
Tue Feb 25 2014 07:13:53 GMT+0100 (CET) Sat Feb 15 2014 07:13:53 GMT+0100 (CET)
这与相同的值originalDate
创建newDate
,但现在它们是2个不同的对象 。
试试这个
var originalDate = new Date();
var newDate = new Date();
newDate.setDate(15);
这个答案假定两个日期最初都是相同的,只是因为它们被连续调用。但是这个假设是不能保证的,如果'originalDate'是在代码的其他地方生成的,那么在任何情况下都会失败。这是**保证**在遥远的未来引入微妙的错误,当与预期的日期奇怪的日期,但意想不到的年份和月份出现在应用程序无处不在,没有人记得为什么'newDate'不是在调用之前完全等于'originalDate' 'setDate'。 – shovavnik