![](/img/trans.png)
[英]Strange behavior of javascript date object. Unable to create correct date
[英]JavaScript Date Object - Strange Behavior
我剛接觸JavaScript,並嘗試使用NodeJS將一些服務器端代碼轉換為JavaScript。 以下是一個摘要; 通常,它需要一個日期並從中減去2周。
誰能解釋為什么發生以下情況?
var currentDate = new Date('05/12/2014 14:32');
currentDate.setDate(currentDate.getDate() - 14);
console.log(typeof currentDate);
console.log(currentDate);
輸出:
object
Mon Apr 28 2014 14:32:00 GMT-0500 (CDT)
現在,一切都很好。 我已經設法減少了14天的約會時間。 但是,它真的不再是'currentDate'了,因此我想將其指定為'futureDate'
var currentDate = new Date('05/12/2014 14:32');
var futureDate = currentDate.setDate(currentDate.getDate() - 14);
console.log(typeof futureDate);
console.log(futureDate);
輸出:
number
1398713520000
ck 不好 看起來從紀元或以數字形式返回的毫秒數。 艱難時期。 但是,如果我這樣做,它怎么會起作用呢?
var currentDate = new Date('05/12/2014 14:32');
currentDate.setDate(currentDate.getDate() - 14);
var futureDate = currentDate;
console.log(typeof futureDate);
console.log(futureDate);
輸出:
object
Mon Apr 28 2014 14:32:00 GMT-0500 (CDT)
這對我來說沒有邏輯意義。 JavaScript傷了我的頭。 非常感謝您能幫助您了解這里發生的情況。 我知道我可以繼續並且我的腳本可以工作,但是我想了解發生了什么。
謝謝湯姆
現在,您的代碼中實際發生的是:
var futureDate = currentDate.setDate(currentDate.getDate()-14);
您正在將currentDate的日期設置為currentDate.getDate() - 14
。 currentDate.setDate
返回與該新日期等效的整數 ,並將其保存到futureDate 。
您應該將其保存為日期,而不是當前的整數。
這是因為futureDate
當前不是日期。 currentDate.getDate() - 14
將僅返回一個數字,但要使它成為Date,則應首先將futureDate
初始化為日期,然后使用futureDate.setDate
為其分配一個新的日期值。
var futureDate = new Date();
futureDate.setDate(currentDate.getDate() - 14);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.