Preciso calcular uma data JS dada ano = 2014 e mês = 9 (setembro de 2014).
Eu tentei isso:
var moment = require('moment');
var startDate = moment( year+'-'+month+'-'+01 + ' 00:00:00' );
var endDate = startDate.endOf('month');
console.log(startDate.toDate());
console.log(endDate.toDate());
Ambos os registros mostram:
Tue Sep 30 2014 23:59:59 GMT+0200 (CEST)
Tue Sep 30 2014 23:59:59 GMT+0200 (CEST)
A data de término está correta, mas ... por que a data de início não está?
javascript
momentjs
Fabio B.
fonte
fonte
moment
é idempotente, então você também pode usarendDate = moment(starDate).endOf("month")
^. ^moment(<value>)
. Atualizado o exemplo para usar algumas das funções mais curtas.add(-1,"month")
não funciona quando é janeiro e você deseja obter o mês do ano passado.você pode usar isso diretamente para a data de término ou início do mês
você pode alterar o formato definindo um novo formato
fonte
Quando você usa,
.endOf()
está alterando o objeto em que é chamado, entãostartDate
se torna 30 de setembroVocê deve usar
.clone()
para fazer uma cópia dele em vez de alterá-lofonte
Experimente o seguinte código:
fonte
Realmente não acho que existe algum método direto para obter o último dia, mas você poderia fazer algo assim:
fonte
sua data de início é o primeiro dia do mês, neste caso, podemos usar
Espero que isto ajude!!
fonte
doc
fonte
fonte
Observe que .clone () é essencial em alguns momentos; caso contrário, ele substituirá o valor. Parece que no seu caso.
É mais genérico, obter um monte de datas que caem entre datas.
fonte
O código a seguir deve funcionar:
fonte
Experimente o seguinte código:
fonte