2015-04-15 17 views
33

Chciałbym, aby zmienna trzymała wczorajszą datę w formacie DD-MM-YYYY za pomocą pliku Moment.js. Więc jeśli dzisiaj jest 15-04-2015, chciałbym odjąć dzień i mieć 14-4-2015.Formatowanie daty i odejmowanie dni przy użyciu pliku Moment.js

Próbowałem kilka kombinacji tak:

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

i tak:

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

i również w ten sposób:

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

Ale ja nie dostaję go. ..

+0

Czy próbowałeś odjąć przed formatowaniem? Formatowanie go daje ci tylko ciąg ... – ndugger

+0

moment(). Odejmij (10, "dni") zamiast tylko "d" może? – leopik

+0

"Zatrzymaj" wczorajszą datę jako ** datę **, i przekształć ją w sformatowany ciąg znaków, gdy chcesz go wyświetlić. – Pointy

Odpowiedz

63

mieć wiele osobliwości dzieje. Pierwsze zostało zmienione w twoim poście, ale miało to związek z kolejnością wywoływania metod.

.format zwraca ciąg znaków. Łańcuch nie ma metody subtract.

Druga kwestia to odejmowanie dnia, ale nie zapisywanie go jako zmiennej.

swój kod, a następnie, powinna wyglądać następująco:

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

jednak można łańcucha to razem; to będzie wyglądać:

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

jest różnica, że ​​jesteśmy ustawienie StartDate do zmian, które robisz na STARTDATE, bo chwila jest destrukcyjne.

+3

moment.js 'subtract' jest w rzeczywistości destrukcyjny. "Mutuje pierwotny moment przez odjęcie czasu". Zobacz tutaj: http://momentjs.com/docs/#/manipulating/subtract/ – docksteaderluke

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

Spróbuj tego:

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

To daje 14-04-2015 - dziś jest 15-04-2015

Alternatywnie, jeśli wersja momentjs jest mniejsza niż 2.8.0, można użyć:

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

Zamiast tego:

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

Chyba masz go w tej ostatniej próbie, wystarczy chwycić sznurek .. w konsoli Chrome ..

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')

Powiązane problemy