2015-04-15 14 views
33

Ich möchte eine Variable, um das gestrige Datum im Format DD-MM-YYYY mit Moment.js zu halten. Also, wenn heute 15-04-2015 ist, würde ich gerne einen Tag subtrahieren und 14-4-2015 haben.Format Datum und subtrahieren Tage mit Moment.js

Ich habe ein paar Kombinationen wie folgt versucht:

startdate = moment().format('DD-MM-YYYY'); 
startdate.subtract(1, 'd'); 

und diese:

startdate = moment().format('DD-MM-YYYY').subtract(1, 'd'); 

und auch dies:

startdate = moment(); 
startdate.subtract(1, 'd'); 
startdate.format('DD-MM-YYYY') 

Aber ich bekomme es nicht. ..

+0

Haben Sie versucht, vor der Formatierung zu subtrahieren? Formatieren gibt Ihnen nur eine Zeichenfolge ... – ndugger

+0

moment(). Subtrahieren (10, "Tage") statt nur "d" vielleicht? – leopik

+0

"Halten Sie das gestrige Datum als ** Datum ** fest und wandeln Sie es in eine formatierte Zeichenfolge um, wenn Sie es anzeigen müssen. – Pointy

Antwort

63

Sie haben passiert mehrere Merkwürdigkeiten. Der erste wurde in Ihrem Beitrag bearbeitet, aber er hatte mit der Reihenfolge zu tun, in der die Methoden aufgerufen wurden.

.format gibt eine Zeichenfolge zurück. String hat keine Methode.

Das zweite Problem ist, dass Sie den Tag subtrahieren, aber nicht als Variable speichern.

Ihr Code sollte dann wie folgt aussehen:

var startdate = moment(); 
startdate = startdate.subtract(1, "days"); 
startdate = startdate.format("DD-MM-YYYY"); 

Sie können jedoch Kette diese zusammen; dies würde wie folgt aussehen:

var startdate = moment().subtract(1, "days").format("DD-MM-YYYY"); 

Der Unterschied besteht darin, dass wir startdate auf die Veränderungen sind einstellen, die Sie auf startdate tun, weil Moment destruktiv ist.

+3

Moment.js subtract ist in der Tat destruktiv. "Verändert den ursprünglichen Moment durch Subtraktion der Zeit". Siehe hier: http://momentjs.com/docs/#/manipulating/subtract/ – docksteaderluke

4
startdate = moment().subtract(1, 'days').format('DD-MM-YYYY'); 
3

Try this:

var duration = moment.duration({'days' : 1}); 
moment().subtract(duration).format('DD-MM-YYYY'); 

Dies wird Ihnen 14-04-2015-heute 15-04-2015

Alternativ, wenn Ihr momentjs Version kleiner als 2.8.0 können Sie verwenden:

startdate = moment().subtract('days', 1).format('DD-MM-YYYY'); 

Statt dessen:

startdate = moment().subtract(1, 'days').format('DD-MM-YYYY'); 
1

Ich glaube, Sie es in diesem letzten Versuch bekommen haben, müssen Sie nur die Zeichenfolge .. in Chrome Konsole greifen ..

startdate = moment(); 
startdate.subtract(1, 'd'); 
startdate.format('DD-MM-YYYY'); 
"14-04-2015" 

startdate = moment(); 
startdate.subtract(1, 'd'); 
myString = startdate.format('DD-MM-YYYY'); 
"14-04-2015" 
myString 
"14-04-2015" 
1

startdate = moment().subtract(1, 'days').startOf('day')

Verwandte Themen