momentJS ciąg daty dodaje 5 dni


154

Mam ciąg daty rozpoczęcia „20.03.2014” i chcę dodać 5 dni do tego z momentem.js, ale nie widzę nowej daty „25.03.2014” w oknie alertu.

tutaj mój kod javascript:

startdate = "20.03.2014";
var new_date = moment(startdate, "DD-MM-YYYY").add("DD-MM-YYYY", 5);

alert(new_date);

tutaj mój jsfiddle: http://jsfiddle.net/jbgUt/1/

Jak mogę to rozwiązać?

Podoba mi się ten format ciągu „25.03.2014”

Mam nadzieję, że ktoś może mi pomóc.

Odpowiedzi:


326

AKTUALIZACJA: 19 stycznia 2016 r

Od momentu 2.8.4 - użyj .add(5, 'd')(lub .add(5, 'days')) zamiast.add('d', 5)

var new_date = moment(startdate, "DD-MM-YYYY").add(5, 'days');

Dzięki @Bala za informacje.

AKTUALIZACJA: 21 marca 2014 r

Oto, co musisz zrobić, aby uzyskać ten format.

Oto zaktualizowane skrzypce

startdate = "20.03.2014";
var new_date = moment(startdate, "DD-MM-YYYY").add('days', 5);

var day = new_date.format('DD');
var month = new_date.format('MM');
var year = new_date.format('YYYY');

alert(day + '.' + month + '.' + year);

ORYGINAŁ: 20 marca 2014

Nie mówisz mu, jak / jaką jednostkę dodać. Posługiwać się -

 var new_date = moment(startdate, "DD-MM-YYYY").add('days', 5);

chcę zobaczyć ten format „25.03.2014” w oknie alertu. Jak mogę to zaimplementować?
Dave

2
W momencie 2.8.4 widzę przestarzały komunikat z add („days”, 5). Zamiast tego użyj add (5, „days”).
Bala

Prawidłowa składnia: moment (). Add (5, 'dni'). Format ("D / M / RRRR") Możesz zajrzeć tutaj: momentjs.com/docs/#/manipulating/add
Costas Bakoulias

16

Funkcja add () zwraca starą datę, ale zmienia pierwotną datę :)

startdate = "20.03.2014";
var new_date = moment(startdate, "DD.MM.YYYY");
new_date.add(5, 'days');
alert(new_date);

5
Tak, to dziwne. Podczas sprawdzania moment(startdate).add(5, 'days')w konsoli otrzymałem Moment {_isAMomentObject: true, _i: "[the original date]",}i byłem pewien, że addmetoda nie działa. Po kilku minutach zdałem sobie sprawę, że metoda DZIAŁA, ponieważ jeśli otworzysz otrzymany obiekt Moment _d : [The date with the addition] _f : "YYYY-MM-DDTHH:mm:ss" _i : [The original date]... Data faktycznie się zmieniła (otrzymasz poprawny wynik z moment(startdate).add(5, 'days').format('YYYYMMDD')), ale jest mylące, że wygląda na to, że data się nie zmieniła t zmienił się. : - |
Gilad Barner

14
moment(moment('2015/04/09 16:00:00').add(7, 'd').format('YYYY/MM/DD HH:mm:mm'))

musi sformatować, a następnie ponownie przekonwertować na moment.


Zaoszczędziłeś mi mnóstwo minut
:)




2

Możesz ograniczyć to, co powiedzieli, w kilku wierszach kodu:

var nowPlusOneDay = moment().add('days', 1);
var nowPlusOneDayStr = nowPlusOneDay.format('YYYY-MM-DD');

alert('nowPlusOneDay Without Format(Unix Date):'+nowPlusOneDay);
alert('nowPlusOneDay Formatted(String):'+nowPlusOneDayStr);

2

Aby uzyskać rzeczywisty działający przykład, który zwraca to, czego można się spodziewać:

var startdate = "20.03.2014";
var new_date = moment(startdate, "DD.MM.YYYY");
var thing = new_date.add(5, 'days').format('DD/MM/YYYY');
window.console.log(thing)

0

zaktualizowane:

startdate = "20.03.2014";
var new_date = moment(startdate, "DD-MM-YYYY").add(5,'days');

alert(new_date)
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.