Chciałbym, aby zmienna zawierała wczorajszą datę w formacie DD-MM-YYYY
używającym Moment.js. Czyli jeśli dzisiaj jest 15-04-2015 to chciałbym odjąć dzień i mieć 14-4-2015.
Wypróbowałem kilka takich kombinacji:
startdate = moment().format('DD-MM-YYYY');
startdate.subtract(1, 'd');
i to:
startdate = moment().format('DD-MM-YYYY').subtract(1, 'd');
a także to:
startdate = moment();
startdate.subtract(1, 'd');
startdate.format('DD-MM-YYYY')
Ale ja tego nie rozumiem ...
javascript
date
momentjs
beaumondo
źródło
źródło
format()
jest funkcją, która sprawia, że jest to ciąg. Powinieneś to zrobić na końcu.Odpowiedzi:
Dzieje się wiele dziwnych rzeczy. Pierwsza została zmieniona w Twoim poście, ale była związana z kolejnością wywoływania metod.
.format
zwraca ciąg. Ciąg nie masubtract
metody.Drugą kwestią jest to, że odejmujesz dzień, ale nie zapisujesz go jako zmiennej.
Twój kod powinien więc wyglądać następująco:
Możesz jednak połączyć to razem; wyglądałoby to następująco:
Różnica polega na tym, że ustawiamy startdate na zmiany, które robisz w startdate, ponieważ moment jest destrukcyjny.
źródło
subtract
jest w rzeczywistości destrukcyjny. „Mutuje pierwotny moment, odejmując czas”. Zobacz tutaj: momentjs.com/docs/#/manipulating/subtractźródło
Spróbuj tego:
To da ci
14-04-2015
- dzisiaj 15-04-2015Alternatywnie, jeśli twoja wersja momentjs jest niższa niż 2.8.0, możesz użyć:
Zamiast tego:
źródło
startdate = moment().subtract(1, 'days').startOf('day')
źródło
Teraz możesz sformatować, jak chcesz zobaczyć tę datę, lub możesz porównać tę datę z inną itp.
Najważniejsza jest funkcja toDate () .
źródło
Myślę, że masz to w ostatniej próbie, wystarczy chwycić za sznurek .. w konsoli Chrome ..
źródło
W angularjs moment = "^ 1.3.0"
źródło