2016-07-20 15 views
0

Ich versuche, 30 Tage bis zum aktuellen Datum zu subtrahieren, und ich empfange immer eine negative Zahl zum Tageswert. Das Wichtigste ist das Format des zurückgegebenen Datums, das muss YYYY-MM-DD sein.Erhalte Datum mit vorherigen 30 Tagen zum aktuellen Datum

Ich weiß, dass es ähnliche Fragen wie diese gibt, aber ich konnte keine Lösung finden.

Das ist, was ich bisher gemacht habe ..

var date = new Date(); 

    var dd = date.getDate()-30; 
    var mm = date.getMonth()+1; 

    var yyyy = date.getFullYear(); 
    if(dd<10){ 
    dd='0'+dd 
    } 
    if(mm<10){ 
    mm='0'+mm 
    } 
    var dateTo = yyyy+'-'+mm+'-'+dd; 

Der obige Code 2016-07- -10 für heute Datum statt 2016-07-21

+0

Nur um zu sehen, ob ich es richtig: Sie wollen heute - 30 Tage? – n0m4d

+1

Wenn Ihre Bibliothek in Ordnung ist, überprüfen Sie http://momentjs.com/. Es ist sehr nützlich für diese Art von Problem – Weedoze

+0

@ n0m4d, ja ich möchte 30 Tage vom aktuellen Tag subtrahieren – Valip

Antwort

5

Weil Sie zurück sind Subtrahieren von einer Zahl, die keine Verbindung zum Datumsobjekt hat. Ändern Sie es ändert nichts als die Nummer ändern. Sie müssen die Tage vom Datum selbst abziehen.

var today = new Date(); 
 
var past30 = new Date(); 
 
past30.setDate(today.getDate()-30); 
 
console.log(past30);

+0

Ich habe das bereits versucht und es gibt mir 'Fehler: Kann Methode" substring "von null nicht aufrufen. In der Konsole – Valip

+1

Warum haben Sie 2 Datumsobjekte verwendet? – 4castle

+0

@ 4castle weil ich mich so gefühlt habe? – epascarello

0
var d = new Date(); 
d.setDate(d.getDate()-30); 
d = d.toISOString().slice(0,10); 
+0

Können Sie erklären, was Sie getan haben und warum? – depperm

+0

@depperm toISOString() gibt das Datumsobjekt als String im Format "YYYY-MM-DDTHH: mm: ss.sssZ" zurück und extrahiert das Datum mit dem Slice. Der Ersatz wird dort nicht benötigt. – havr

+0

sein Bestes, um eine Erklärung zu jedem Code enthalten, die Sie in Ihrer Antwort haben – depperm

Verwandte Themen