web-dev-qa-db-fra.com

MomentJS - Comment obtenir le dernier jour du mois précédent à compter de la date?

J'essaie d'obtenir le dernier jour du mois précédent en utilisant:

 var dateFrom = moment(dateFrom).subtract(1, 'months').format('YYYY-MM-DD');

Où: 

dateFrom = 2014-11-30 

Mais après avoir utilisé 

subtract(1, 'months')

il retourne la date 

DATE_FROM: "2014-10-30"

Mais le dernier jour du dixième mois est le 31. 

Comment puis-je résoudre je s'il vous plaît?

Un grand merci pour toute aide.

33
redrom

Une solution encore plus simple consisterait à utiliser moment.date(0). la fonction .date() prend entre le jour 1 et le jour n du mois en cours; toutefois, passer un nombre nul ou négatif donnera une date du mois précédent.

Par exemple, si la date actuelle est le 3 février:

var _date = moment(); // 2018-02-03 (current day)
var _date2 = moment().date(0) // 2018-01-31 (start of current month minus 1 day)
var _date3 = moment().date(4) // 2018-02-04 (4th day of current month)
var _date4 = moment().date(-4) // 2018-01-27 (start of current month minus 5 days)

console.log(_date.format("YYYY-MM-DD"));
console.log(_date2.format("YYYY-MM-DD"));
console.log(_date3.format("YYYY-MM-DD"));
console.log(_date4.format("YYYY-MM-DD"));
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.20.1/moment.js"></script>

1
mhodges