簡體   English   中英

JavaScript Date.getTime函數未返回正確的值,或者我做錯了

[英]Javascript Date.getTime function doesn't return the correct value or I'm doing something wrong

我正在嘗試計算給定日期的時間戳(小時和分鍾目前不重要)。
我不是要計算兩個日期之間的天數,而是作為計算時間戳的問題樣本,讓我們看一下下面的代碼段,該代碼段計算了兩個日期之間的天數:

console.log(((new Date(2017,2,10)).getTime() - (new Date(2017,1,31)).getTime())/86400000);

此代碼段對我來說是7,而如果我正確地進行數學運算,它實際上應該可以打印10。 我知道我的代碼有問題,但是我不知道這是什么。

Date構造函數中的月份是0索引的,所以0是一月,1是二月, new Date(2017,11,32) ,而且參數可能會溢出( new Date(2017,11,32)實際上是Mon Jan 01 2018 00:00:00 )。 因此,在您的示例中,日期實際上是:

new Date(2017,1,31)
Fri Mar 03 2017 00:00:00
new Date(2017,2,10)
Fri Mar 10 2017 00:00:00

因此結果是正確的。

在您的代碼中返回的值絕對正確。 根據Javascript MDN Documentation ,對於函數中的Month參數,您可以傳遞以下允許值,否則將自動調整它們-

代表月份的整數值,從1月的0到12月的11開始。

因此,在您的情況下,由於不存在31 February 2017 ,因此Date對象將自動調整並初始化為03 March 2017 另一個日期初始值為10 March 2017 因此,差異將正確地顯示為7天。 這是MDN文檔中有關調整的簡短說明-

如果將Date用作具有多個自變量的構造函數,則如果值大於其邏輯范圍(例如,將13作為月份值或將70作為分鍾值),則會調整相鄰的值。 例如,新的Date(2013,13,1)等同於新的Date(2014,1,1),兩者都為2014-02-01創建一個日期(請注意,該月是從0開始的)。 同樣,對於其他值:new Date(2013,2,1,0,70)等效於new Date(2013,2,1,1,10),兩者都為2013-03-01T01:10:00創建一個日期。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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