簡體   English   中英

為什么帶有日期(兩個日期之間的天數)的此操作返回此值?

[英]Why this operation with date (number of days between 2 dates) return this value?

根據這個問題,我寫了“我的代碼”(沒有Math.abs,我不需要它):

var oneDay = 24 * 60 * 60 * 1000; // hours*minutes*seconds*milliseconds
var firstDate = new Date("2011", "09", "28"); // 28 september 2011
var secondDate = new Date("2011", "09", "30"); // 30 september 2011

var notti = ((secondDate.getTime() - firstDate.getTime()) / (oneDay));
if (notti < 1)
    notti = 1;
else
    notti = Math.round(notti);

alert(notti);

並打印2(正確)。

現在,如果我這樣做:

var oneDay = 24 * 60 * 60 * 1000; // hours*minutes*seconds*milliseconds
var firstDate = new Date("2011", "09", "28"); // 28 september 2011
var secondDate = new Date("2011", "10", "01"); // 01 october 2011

var notti = ((secondDate.getTime() - firstDate.getTime()) / (oneDay));
if (notti < 1)
    notti = 1;
else
    notti = Math.round(notti);

alert(notti);

它打印4。為什么是4? 應該是3 ...您知道這個問題嗎?

日期構造函數(和其他日期方法)中的month參數從[0.11]而不是[1..12]運行,因此:

new Date("2011", "09", "28"); // 28 september 2011

實際上是Fri Oct 28Fri Oct 28 ,而不是9月。

JavaScript月份是從零開始的。 因此,十月有31天。

new Date("2011", "9", "31"); // October 31st

因為...

new Date("2011", "09", "28").toString()

...返回:

Fri Oct 28 2011 00:00:00 GMT-0400 (EDT)

這是因為JavaScript Data基於Java Date對象這很糟 另請參見“Puizzle 61:約會游戲”書中JavaPuzzlers作出解釋。

暫無
暫無

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

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