Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 搜索日期数组始终返回-1_Javascript_Date - Fatal编程技术网

Javascript 搜索日期数组始终返回-1

Javascript 搜索日期数组始终返回-1,javascript,date,Javascript,Date,我已经为去年创建了一个日期数组,我需要在给定日期的数组中找到索引,但它返回-1 然而,如果我硬编码日期,这是不好的,因为它不是动态的,它的工作和输出331,这是我所期望的 我该怎么做才能让它工作 // Returns an array of dates between the two dates var getDates = function(startDate, endDate) { var dates = [], currentDate = startDate, addD

我已经为去年创建了一个日期数组,我需要在给定日期的数组中找到索引,但它返回-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

因为您没有将小时、分钟设置为
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
演示

//返回两个日期之间的日期数组
var getDates=函数(开始日期、结束日期){
var日期=[],
当前日期=开始日期,
addDays=函数(天){
var date=新日期(this.valueOf());
date.setDate(date.getDate()+天);
返回日期;
};

而(currentDate因为您没有将小时、分钟设置为
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
演示

//返回两个日期之间的日期数组
var getDates=函数(开始日期、结束日期){
var日期=[],
当前日期=开始日期,
addDays=函数(天){
var date=新日期(this.valueOf());
date.setDate(date.getDate()+天);
返回日期;
};

虽然(currentDate请显示不工作的代码。它在哪里返回-1或331?为什么要从代码中删除该代码段。当我修复它时,它是一个错误。请显示不工作的代码。它在哪里返回-1或331?为什么要从代码中删除该代码段。当我修复它时,它是一个错误。感谢快速响应。我将尽快接受。真不敢相信一句话就搞定了,谢谢你的快速反应。我会尽快接受。真不敢相信一句话就搞定了