Javascript 在JSON变量循环中获取最后5年的日期

Javascript 在JSON变量循环中获取最后5年的日期,javascript,jquery,json,Javascript,Jquery,Json,我想知道如何从以下格式的JSON变量中检索过去5年和过去10年的日期 var dates = "[{\"Date\":\"1996-05-31T00:00:00\"},{"Date\":\"1996-06-30T00:00:00\"},{\"Date\":\"1996-07-31T00:00:00\"},{\"Date\":\"1996-08-31T00:00:00\"},{"Date\":\"1996-09-30T00:00:00\"},{\"Date\":\"1996-10-31T00:

我想知道如何从以下格式的JSON变量中检索过去5年和过去10年的日期

var dates = 

"[{\"Date\":\"1996-05-31T00:00:00\"},{"Date\":\"1996-06-30T00:00:00\"},{\"Date\":\"1996-07-31T00:00:00\"},{\"Date\":\"1996-08-31T00:00:00\"},{"Date\":\"1996-09-30T00:00:00\"},{\"Date\":\"1996-10-31T00:00:00\"} ...
{\"Date\":\"2013-08-31T00:00:00\"},{"Date\":\"2013-09-30T00:00:00\"},{\"Date\":\"2013-10-31T00:00:00\"}]"
注意。。。因为空间的关系,我把中间所有的变量都省略了

这就是我到目前为止所做的:

var data = JSON.parse(dates);

var d1 = [] d2 = [], d3 [];

var today = new Date();today.setHours(0,0,0,0);
var last5Years = new Date(today.setFullYear(today.getFullYear() -5)).getTime();
var last10Years = new Date(today.setFullYear(today.getFullYear() - 10)).getTime();

for (i = 0; i < data.length; i++) {
  var s = data[i].Date.split('T')[0];
  var t = [new Date(s).getTime()];
  d1.push(t);  // all dates
  if (t[0] > last5Years) {
   d2.push(t); //push last 5years dates to d2
  }
 else if (t[0] > last10Years) { 
   d3.push(t); //push last 10 years dates to d3
 }
}
var data=JSON.parse(日期);
变量d1=[]d2=[],d3[];
var today=新日期();今天,设定时间(0,0,0,0);
var last5Years=新日期(today.setFullYear(today.getFullYear()-5)).getTime();
var last10Years=新日期(today.setFullYear(today.getFullYear()-10)).getTime();
对于(i=0;i最近5年){
d2.推(t);//推过去5年的日期到d2
}
else如果(t[0]>last10Years){
d3.推(t);//推过去10年的日期到d3
}
}
d2似乎可以工作,但d3由于某种原因不正确

提前感谢

1)获取今天的日期如下

var today = new Date();  //returns dateTime
today.setHours(0,0,0,0); //reset time to zero to get only the date part
2) 要回到5年前,就要开始并设定它

var last5Years = new Date(today.setFullYear(today.getFullYear() + 5)).getTime();
var last10Years = new Date(today.setFullYear(today.getFullYear() + 5)).getTime();
3) 现在回到10年,再次将今天的年份减少5(不是10),并设置它

var last5Years = new Date(today.setFullYear(today.getFullYear() + 5)).getTime();
var last10Years = new Date(today.setFullYear(today.getFullYear() + 5)).getTime();
4) 由于您已经在json中解析了日期,只需添加以下条件

var s = data[i].Date.split('T')[0];
    var t = [new Date(s).getTime()];
    d1.push(t);  //push all dates to d1
    if (t < last5Years) { 
        d2.push(t); //push last 5years dates to d2
    }
    else if (t < last10Years) { 
        d3.push(t); //push last 10 years dates to d3
    }
var s=data[i].Date.split('T')[0];
var t=[新日期.getTime()];
d1.推力(t)//将所有日期推送到d1
如果(t<5年){
d2.推(t);//推过去5年的日期到d2
}
如果(t<10年){
d3.推(t);//推过去10年的日期到d3
}
最后,您的代码将是

var data = JSON.parse(dates);
var d1 = [], d2 = [], d3 = [];
for (var i = 0; i<data.length;i++) {
    var today = new Date();
    today.setHours(0,0,0,0);
    //Get time of last 5 years
    var last5Years = new Date(today.setFullYear(today.getFullYear() + 5)).getTime();
    //Get time of last 10 years
    var last10Years = new Date(today.setFullYear(today.getFullYear() + 5)).getTime();
    var s = data[i].Date.split('T')[0];
    var t = [new Date(s).getTime()];
    d1.push(t);  //push all dates to d1
    if (t < last5Years) { 
        d2.push(t); //push last 5years dates to d2
    }
    else if (t < last10Years) { 
        d3.push(t); //push last 10 years dates to d3
    }
}
var data=JSON.parse(日期);
变量d1=[]、d2=[]、d3=[];

对于(var i=0;i您是希望一年中的每一天持续5年?还是希望时间?
getTime()
分别是5年前和10年前,并与您的日期进行比较…似乎很简单。是否要将数据数组中的日期分为两类>5和>10@SolomonClosson是的,我需要3个阵列-全部(d1),最后5个(d2)年,过去10(d3)年,格式与D1相同这看起来正是我需要的,但是我得到了这个错误,TypeError:today.setFullYear(…).getTime不是一个函数var last5Years=today.setFullYear(today.getFullYear+5.getTime();@uknowit2抱歉,这是一个打字错误。将其更改为
var last5Years=new Date(today.setFullYear(today.getFullYear()+5)).getTime();
好的,我想我们非常接近了。我的d1系列和d2系列的数据完全相同。console.log(过去5年)=1543389063839,我的最后一个日期系列是138049920000,第一个是83350080000,因此t1543389063839
看到这一点,我可以保证
last5Years
同时使用日期和时间。所以我们需要重置
今天的时间。让我给你。@uknowit2只需添加一个
today.setHours(0,0,0,0);
var today=new Date();
旁边。现在问题将得到解决。让我看看它是否有效。