2017-12-17 2 views
0

Ich versuche, eine Liste der sortierten Daten zu erstellen. Ich kann keine externen Bibliotheken wie moment.js verwenden. Es muss in Jahr-Monat-Art mit einer Reichweite von 2 Jahren geteilt durch Monate formatiert werden. Ich habe Liste von Monaten und es funktioniert für mich, aber ich habe Probleme mit Jahren (im beigefügten Beispiel ist es nicht gut funktioniert). Haben Sie eine Idee oder Vorschläge, wie Sie diese Liste verbessern können?Generieren Liste von Daten aus dem Bereich von 2 Jahren

var today = new Date(); 
 

 
var months = ["01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12"]; 
 

 
var initalList = []; 
 

 
var previousYear = today.getFullYear() -1; 
 
var aMonth = today.getMonth(); 
 

 
for (var i=0; i<25; i++) { 
 
    initalList.push({month: months[aMonth], year: previousYear, myDate: previousYear + '-' + months[aMonth]}); 
 
    if(i > 12) { 
 
     previousYear = today.getFullYear(); 
 
    } 
 
    aMonth++; 
 
    if(aMonth > 11) { 
 
     aMonth = 0; 
 
    } 
 
} 
 
initalList.shift(); 
 

 
console.log(initalList)

+1

Was ist das Problem, das Sie konfrontiert sind? –

+0

Ich habe eine Liste der letzten 24 Monate erstellt, aber ich kann sie nicht mit richtigen Jahren verbinden. – Gloom

+0

Ändern Sie Ihre If-Bedingung von 'if (i> 12) {' nach 'if (i> = 12) {' –

Antwort

2

Sie müssen nur den Monat subtrahieren, wird das native Datum tun, die Sie benötigen. Siehe Beispiel unten:

var dates = []; 
 
var now = new Date(); 
 
var numberOfPastMonths = 24; 
 

 
var year = now.getFullYear(); 
 
var month = now.getMonth(); 
 
//months quantity 
 
for(var i = 0; i < numberOfPastMonths; i++){ 
 
    //you only need to substract the months 
 
    dates.push(new Date(year, month - i, 1)); 
 
} 
 

 
console.log(dates);

+1

Ok, das funktioniert für mich. Vielen Dank. – Gloom

+0

Sie sind willkommen: D –

1

Nicht sicher, dass Sie andere Lösung wollen, aber ich denke, kann sich mit verschachtelten Schleifen eine Lösung des Problems sein.

var today = new Date(); 
 
var result = []; 
 
for (var i = 1; i >= 0; i--) { 
 
    for (var j = 1; j <= 12; j++) { 
 
    var yr = today.getFullYear() - i; 
 
    var mnth = ("0" + j).slice(-2); 
 
    result.push({ 
 
     month: mnth, 
 
     year: yr, 
 
     myDate: yr + "-" + mnth 
 
    }) 
 
    } 
 
} 
 
console.log(result);

+0

Ihre Lösung funktioniert auch gut. Vielen Dank. – Gloom

Verwandte Themen