gpt4 book ai didi

javascript - 计算两个给定日期之间的天数的函数有时会产生不准确的结果

转载 作者:行者123 更新时间:2023-11-29 16:30:50 28 4
gpt4 key购买 nike

我有一个天数间隔函数,应该准确计算两个日期之间的天数,代码如下:

function DaysBetween(str1, str2) {
var date1 = str1;
var date2 = str2;
date1 = date1.split("/");
date2 = date2.split("/");
var oneday = 24 * 60 * 60 * 1e3;
date1 = new Date(date1[2], date1[0], date1[1]);
date2 = new Date(date2[2], date2[0], date2[1]);
var diffDays = Math.round(Math.abs((date1.getTime() - date2.getTime()) / oneday));
if (diffDays == 0) {
diffDays = 1;
}

console.log(diffDays);
return diffDays;
}
DaysBetween("9/24/2019","10/1/2019")

这有时工作正常,但有时给出的天数不准确。

例如,如果 date1 = 09/24/2019date2 = 09/25/2019 则返回正确答案“1”或 date1 = 09/24/2019date2 = 09/30/2019 它返回 6 天的正确答案,但是如果我输入 date1 = 09/24/2019< 的日期date2 = 10/01/2019 它返回“8 天”,而它应该是 7。什么给出?

最佳答案

在 JavaScript 中,如果不以日期字符串形式提供,则月份从 0 开始。

例如,new Date(2019,0,1)将返回 2019 年 1 月 1 日new Date(2019,1,1)将于2019 年 2 月 1 日返回

同时,new Date("2019/1/1")将于2019 年 1 月 1 日返回

console.log(new Date(2019,0,1).toString())
console.log(new Date(2019,1,1).toString())

在您的代码中,它计算2019年10月24日2019年11月1日之间的差异。 10 月有 31 天,因此 8 是正确答案。要获得 2019 年 9 月 24 日2019 年 10 月 1 日 的差异,您需要将月份值减 1。

您需要将代码更正为以下内容

date1 = new Date(date1[2], parseInt(date1[0])-1, date1[1]);
date2 = new Date(date2[2], parseInt(date2[0])-1, date2[1]);

function DaysBetween(str1, str2) {
var date1 = str1;
var date2 = str2;
date1 = date1.split("/");
date2 = date2.split("/");
var oneday = 24 * 60 * 60 * 1e3;
date1 = new Date(date1[2], parseInt(date1[0]) - 1, date1[1]);
date2 = new Date(date2[2], parseInt(date2[0]) - 1, date2[1]);
var diffDays = Math.round(Math.abs((date1.getTime() - date2.getTime()) / oneday));
if (diffDays == 0) {
diffDays = 1;
}

console.log(diffDays);
return diffDays;
}
DaysBetween("9/24/2019", "10/1/2019");

这是一个建议。您不需要所有这些行。这可以通过以下代码轻松完成

function dateDiff(d1,d2){
return (new Date(d2).getTime() - new Date(d1).getTime())/(1000 * 60 * 60 * 24);
}

它将获取 unix 时间戳中的时间,找到差异,然后除以1000 * 60 * 60 * 24来找到天数。

function dateDiff(d1,d2){
return (new Date(d2).getTime() - new Date(d1).getTime())/(1000 * 60 * 60 * 24);
}

console.log(dateDiff("2019/9/24","2019/10/1"));

关于javascript - 计算两个给定日期之间的天数的函数有时会产生不准确的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58067767/

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