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. 將php變量賦值給javascript變量
- 4. 將javascript變量賦值給java變量
- 5. 變量賦值
- 6. 期望腳本變量賦值
- 7. 有關日期變量賦值的R問題
- 8. 將javascript變量賦值給angularjs $ scope.options
- 9. Javascript,變量未被賦值...爲什麼?
- 10. javascript/jquery全局變量未被賦值
- 11. JavaScript變量賦值令人驚訝
- 12. 將值賦給JavaScript變量C#
- 13. JavaScript的逗號和變量賦值
- 14. 將javascript數組賦值給angularjs變量
- 15. PHP變量賦值
- 16. 多變量賦值
- 17. Golang變量賦值
- 18. OdiOSCommand變量賦值
- 19. XSL變量賦值
- 20. Jquery:變量賦值
- 21. C#變量賦值
- 22. 如何將日期從PHP日期變量傳遞給JavaScript日期變量
- 23. 變量賦值輸入值
- 24. 如何將PHP變量值賦給Javascript變量?
- 25. Javascript:將對象賦值給const變量vs讓變量
- 26. 將變量名賦值給變量名
- 27. 根據變量賦值給變量
- 28. 將jQuery變量賦值給php變量
- 29. 從另一個變量賦值變量
- 30. php直接變量賦值
它看起來像'date2'被設置爲指向'date1'指向的指針。 – James