var date1 = new Date();
date1.setFullYear(2011, 6, 1);
// 2011-07-01, ok
console.log(date1);
// set date2 the same date as date1
var date2 = date1;
// ...
// now I'm gonna set a new date for date2
date2.setFullYear(2011, 9, 8);
// 2011-10-08, ok
console.log(date2);
// 2011-10-08, wrong, expecting 2011-07-01
// I didn't assign a new date to date1
// WHY is date1 changed?
console.log(date1);
回答
两个日期变量是内存中的同一日期的对象只是引用。所以你需要date2
是date1
的克隆。变化:
var date2 = date1;
这样:
var date2 = new Date(date1.getTime());
您需要创建的date1
,目前date1
和date2
副本是指在同一日期的对象。
var date2 = new Date(date1.valueOf());
JavaScript使用由日期*基准通行(以及所有的非原语 - var o = {}; var j = o; j.foo = 1; console.log(o.foo); //1
在另一方面,对于数字,字符串和布尔var o = 0; var j = o; j++; console.log(j); // 0
),使得预期的行为。
如果你需要复制一个日期,你可以随时
var date2 = new Date(date1.getTime());
*请参阅意见,明白为什么这是不完全正确。
这不是真的通过参考。如果值是参考值,那么它是按值传递的。如果它是通过引用传递的,那么改变引用会改变对象:'a = {}; B = A; b = null;'在通过引用评估模型中,'a === null'应该是true,因为'b' *是*'a'并且我们将'b'设置为'null'。 – davin
@达文这是我不知道的微妙之处。 – cwallenpoole
投票。很有帮助。然而一个细节。如果'date2'已经被分配,那么就不需要使用'new'。分配可以通过:'date2.setTime(date1.valueOf());'完成。 – Karl
date2
这是对date1
的参考。
,达到了预期的效果,请执行下列操作:@ SergeS的回答
var date1 = new Date();
date1.setFullYear(2011, 6, 1);
var date2 = new Date();
date2.setTime(date1.valueOf());
变化,但日期()的JS对象强制为数字,所以你不需要的getTime():
// general case
var dateValueCopy = new Date(date1);
并与OP重申变量名:
var date2 = new Date(date1);
要显示日期对象强制编号尝试:(new Date()* 1) – yzorg
<html lang="en">
<head>
<script>
function getDateDiff(time1, time2) {
var str1= time1.split('/');
var str2= time2.split('/');
var t1 = new Date(str1[2], str1[0]-1, str1[1]);
var t2 = new Date(str2[2], str2[0]-1, str2[1]);
var diffMS = t1 - t2;
console.log(diffMS + ' ms');
var diffS = diffMS/1000;
console.log(diffS + ' ');
var diffM = diffS/60;
console.log(diffM + ' minutes');
var diffH = diffM/60;
console.log(diffH + ' hours');
var diffD = diffH/24;
console.log(diffD + ' days');
alert(diffD);
}
//alert(getDateDiff('10/18/2013','10/14/2013'));
</script>
</head>
<body>
<input type="button" onclick="getDateDiff('10/18/2013','10/14/2013')" value="clickHere()" />
</body>
</html>
- 1. JavaScript变量赋值
- 2. JavaScript变量赋值?
- 3. 赋值给Javascript变量
- 4. Javascript多变量赋值
- 5. JavaScript变量赋值核心
- 6. (Angularjs Javascript)变量赋值
- 7. JavaScript全局变量赋值
- 8. JavaScript中的变量赋值
- 9. 将php变量赋值给javascript变量
- 10. 将javascript变量赋值给java变量
- 11. 将javascript变量赋值给php变量
- 12. 变量赋值
- 13. 期望脚本变量赋值
- 14. 来自查询的日期变量赋值
- 15. 有关日期变量赋值的R问题
- 16. 的Javascript日期变量
- 17. 在代码后面使用javascript变量赋值C#变量值
- 18. 无法型号值赋给JavaScript变量
- 19. 将javascript变量赋值给angularjs $ scope.options
- 20. Javascript,变量未被赋值...为什么?
- 21. 对象中的JavaScript变量赋值
- 22. 将值赋给JavaScript变量C#
- 23. 将javascript数组赋值给angularjs变量
- 24. JavaScript变量赋值令人惊讶
- 25. javascript变量未被正确赋值
- 26. javascript/jquery全局变量未被赋值
- 27. Jquery:变量赋值
- 28. 为变量赋值
- 29. Python变量赋值
- 30. CSS变量赋值
它看起来像'date2'被设置为指向'date1'指向的指针。 – James