gpt4 book ai didi

javascript - 如何解决年份变化时天数不匹配的问题

转载 作者:行者123 更新时间:2023-11-28 18:18:04 27 4
gpt4 key购买 nike

this code ,

var date1 = new Date("1/1/2010");
var date2 = new Date("12/31/2010");
var timeDiff1 = GetTimeDiff(date1, date2);


var date3 = new Date("1/1/2011");
var date4 = new Date("12/31/2011");
var timeDiff2 = GetTimeDiff(date3, date4);

var date5 = new Date("1/1/2010");
var date6 = new Date("12/31/2011");
var timeDiff3 = GetTimeDiff(date5, date6);

var diffDays1 = GetDiffDays(timeDiff1);
var diffDays2 = GetDiffDays(timeDiff2);
var diffDays3 = GetDiffDays(timeDiff3);

console.log('No. of days between ' + date1 + ' & ' + date2 + ' are ' + diffDays1);
console.log('No. of days between ' + date3 + ' & ' + date4 + ' are ' + diffDays2);

console.log('However,\nNo. of days between ' + date5 + ' & ' + date6 + ' are ' + diffDays3);

function GetDiffDays(timeDiff) {
return Math.ceil(timeDiff / (1000 * 3600 * 24));
}

function GetTimeDiff(date1, date2) {
return Math.abs(date2.getTime() - date1.getTime());
}

没有。 2010 年 1 月 1 日至 2010 年 12 月 31 日期间的天数为 364

没有。 2011 年 1 月 1 日至 2011 年 12 月 31 日期间的天数为 364

因此,理想情况下,2010 年 1 月 1 日至 2011 年 12 月 31 日之间的天数应为 364 + 364 = 728

但是,

没有。 2010 年 1 月 1 日至 2011 年 12 月 31 日期间的天数为 729

我们如何在生产环境中解决这个问题?

最佳答案

您可能已经注意到,该代码仅计算通常一年 365 天中的 364 天。这是因为除夕夜没有被计算在内。该代码计算“截至”但不“包括”一年中的最后一天。

从2010年的第一天到(但不包括)2010年的最后一天,共有364天。从 2010 年第一天到 2011 年第一天,共有 365 个(请注意,我说的是从计数中排除最后一天)。

您很可能希望从指定年份的第一天开始计数,一直到下一年的第一天,这样您就可以计算指定年份中的每一天。请注意,正如您所说,您正在计算日期“之间”的天数。或者,您可能还想包括最后一天(更改之间行为)

检查下面的示例代码,看看它是否满足您的需求:

var date1 = new Date("1/1/2010");
var date2 = new Date("12/31/2010 23:59");
var timeDiff1 = GetTimeDiff(date1, date2);


var date3 = new Date("1/1/2011");
var date4 = new Date("12/31/2011 23:59");
var timeDiff2 = GetTimeDiff(date3, date4);

var date5 = new Date("1/1/2010");
var date6 = new Date("12/31/2011 23:59");
var timeDiff3 = GetTimeDiff(date5, date6);

var diffDays1 = GetDiffDays(timeDiff1);
var diffDays2 = GetDiffDays(timeDiff2);
var diffDays3 = GetDiffDays(timeDiff3);

console.log('No. of days between ' + date1 + ' & ' + date2 + ' are ' + diffDays1);
console.log('No. of days between ' + date3 + ' & ' + date4 + ' are ' + diffDays2);

console.log('However,\nNo. of days between ' + date5 + ' & ' + date6 + ' are ' + diffDays3);

function GetDiffDays(timeDiff) {
return Math.ceil(timeDiff / (1000 * 3600 * 24));
}

function GetTimeDiff(date1, date2) {
return Math.abs(date2.getTime() - date1.getTime());
}

关于javascript - 如何解决年份变化时天数不匹配的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40487889/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com