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