Получить последние 5 лет дат в переменной JSON - цикл

0

Я хотел бы знать, как я могу получить последние 5 лет и последние 10 лет дат из JSON Variable, который находится в следующем формате.

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 неверен.

заранее спасибо

  • 0
    Вы хотите каждый день в течение 5 лет? Или ты хочешь времена?
  • 0
    getTime() 5 лет назад и 10 лет назад и сравните с вашими датами .... кажется довольно простым.
Показать ещё 2 комментария
Теги:

1 ответ

1
Лучший ответ

1) Получить today 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
    }
}

Надеюсь ты понимаешь.

  • 0
    это выглядит как раз то, что мне нужно, но я получаю эту ошибку, TypeError: today.setFullYear (...). getTime не является функцией var last5Years = today.setFullYear (today.getFullYear + 5) .getTime ();
  • 0
    @ uknowit2 Извините, это была опечатка. измените его как var last5Years = new Date(today.setFullYear(today.getFullYear() + 5)).getTime();
Показать ещё 7 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню