gpt4 book ai didi

javascript - 搜索日期数组总是返回 -1

转载 作者:行者123 更新时间:2023-12-01 02:34:06 24 4
gpt4 key购买 nike

我创建了去年的日期数组,我需要在给定日期的数组中查找索引,但它返回 -1

但是,如果我对日期进行硬编码,这不太好,因为它不是动态的,它会工作并输出 331,这正是我所期望的

我该怎么做才能让它发挥作用?

// Returns an array of dates between the two dates
var getDates = function(startDate, endDate) {
var dates = [],
currentDate = startDate,
addDays = function(days) {
var date = new Date(this.valueOf());
date.setDate(date.getDate() + days);
return date;
};

while (currentDate <= endDate) {
dates.push(currentDate);
currentDate = addDays.call(currentDate, 1);
}
return dates;
};

var today = new Date(),
last_year = new Date();

last_year.setMonth(last_year.getMonth() - 12);
last_year.setDate(last_year.getDate() + 1);

var dates = getDates(last_year, today);

var d = new Date(2017, 10, 31);

var test = dates.map(Number).indexOf(+d);
console.log(test); // dump -1

这有效......

dates = getDates(new Date(2017, 0, 4), new Date(2018, 12, 4));
d = new Date(2017, 10, 31);

test = dates.map(Number).indexOf(+d);
console.log(test); // dumps 331

最佳答案

因为您没有将小时分钟设置为0,所以new Date()正在使用您需要清除的当前时间戳

last_year.setMonth(last_year.getMonth() - 12);
last_year.setDate(last_year.getDate() + 1);
last_year.setHours(0,0,0,0); //this line is added

演示

// Returns an array of dates between the two dates
var getDates = function(startDate, endDate) {
var dates = [],
currentDate = startDate,
addDays = function(days) {
var date = new Date(this.valueOf());
date.setDate(date.getDate() + days);
return date;
};

while (currentDate <= endDate) {
dates.push(currentDate);
currentDate = addDays.call(currentDate, 1);
}
return dates;
};

var today = new Date(),
last_year = new Date();

last_year.setMonth(last_year.getMonth() - 12);
last_year.setDate(last_year.getDate() + 1);
last_year.setHours(0,0,0,0);

var dates = getDates(last_year, today);

var d = new Date(2017, 10, 31);

var test = dates.map(Number).indexOf(+d);
console.log(test);

// works

dates = getDates(new Date(2017, 0, 4), new Date(2018, 12, 4));
d = new Date(2017, 10, 31);

test = dates.map(Number).indexOf(+d);
console.log(test);

关于javascript - 搜索日期数组总是返回 -1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48076693/

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