簡體   English   中英

JavaScript日期對象-奇怪的行為

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM