momentJS date string adicionar 5 dias


154

eu tenho uma string de data de início "20.03.2014" e quero adicionar 5 dias a isso com moment.js, mas não recebo a nova data "25.03.2014" na janela de alerta.

aqui meu código javascript:

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

alert(new_date);

aqui meu jsfiddle: http://jsfiddle.net/jbgUt/1/

Como posso resolver isso ?

Eu gosto desse formato de string "25.03.2014"

Espero que alguém possa me ajudar.

Respostas:


326

ATUALIZADO: 19 de janeiro de 2016

A partir do momento 2.8.4 - use .add(5, 'd')(ou .add(5, 'days')) em vez de.add('d', 5)

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

Obrigado @Bala pela informação.

ATUALIZADO: 21 de março de 2014

Isso é o que você teria que fazer para obter esse formato.

Aqui está um violino atualizado

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

ORIGINAL: 20 de março de 2014

Você não está dizendo como / qual unidade adicionar. Usar -

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

Eu quero ver este formato "25.03.2014" na janela de alerta, como posso implementar isso?
Dave

2
A partir do momento 2.8.4, vejo a mensagem obsoleta com add ('days', 5). Use add (5, 'dias').
Bala

A sintaxe correta: moment (). Add (5, 'days'). Format ("D / M / YYYY") Você pode procurar um pouco aqui: momentjs.com/docs/#/manipulating/add
Costas Bakoulias

16

A função add () retorna a data antiga, mas altera a data original :)

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

5
Sim, isso é estranho. Ao fazer o check- moment(startdate).add(5, 'days')in no console, você Moment {_isAMomentObject: true, _i: "[the original date]",}tinha certeza de que o addmétodo não estava funcionando. Depois de passar alguns minutos, percebi que o método estava funcionando, porque se você abrir o objeto que obtém Moment _d : [The date with the addition] _f : "YYYY-MM-DDTHH:mm:ss" _i : [The original date]... A data realmente mudou (você obterá o resultado correto moment(startdate).add(5, 'days').format('YYYYMMDD')), mas é confuso que parece que a data não está ' t mudou. : - |
Gilad Barner

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

precisa formatar e depois converter para o momento novamente.


Você me salvou muitos minutos
:)



3
  1. adicione https://momentjs.com/downloads/moment-with-locales.js à sua página html
  2. var todayDate = moment().format('DD-MM-YYYY');//to get today date 06/03/2018 if you want to add extra day to your current date então
  3. var dueDate = moment().add(15,'days').format('DD-MM-YYYY')// to add 15 days to current date..

os pontos 2 e 3 estão usando no seu código jquery ...


2

Você pode reduzir o que eles disseram em algumas linhas de código:

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

Para obter um exemplo de trabalho real que retorne o que seria de esperar:

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

Atualizada:

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

alert(new_date)
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.