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

Get last 5 years of dates in a JSON variable - loop

本文关键字:最近 5年 日期 获取 JSON 变量 循环      更新时间:2023-12-11

我想知道如何从以下格式的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
 }
}

d2似乎有效,但d3由于某种原因不正确。

提前感谢

1)获取today's date如下

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();

3) 现在要将恢复到10年,再次将今天的年份减少5(而不是10)并设置它。

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 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
    }
}

希望你能理解。