Подтвердить что ты не робот

MomentJS - Как получить последний день предыдущего месяца с даты?

Я пытаюсь получить последний день предыдущего месяца, используя:

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

Где:

dateFrom = 2014-11-30 

Но после использования

subtract(1, 'months')

возвращает дату

DATE_FROM: "2014-10-30"

Но последний день 10-го месяца - 31.

Как я могу решить, пожалуйста?

Большое спасибо за любую помощь.

4b9b3361

Ответ 1

Просто добавьте endOf('month') к вашим вызовам:

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

http://jsfiddle.net/r42jg/327/

Ответ 2

Еще более простым решением было бы использование moment.date(0). функция .date() принимает дни от 1 до n текущего месяца, однако если передать нулевое или отрицательное число, получатся даты в предыдущем месяце.

Например, если текущая дата 3 февраля:

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>

Ответ 3

Последний месяц Первая дата и последний месяц Последняя дата с текущей даты. Формат даты меняется в зависимости от. (ДД-ММ-ГГГГ)

console.log("last month first date");
   const lastmonthlastdate=moment().subtract(1, 'months').startOf('month').format('DD-MM-YYYY')
console.log(lastmonthlastdate);

console.log("lastmonth last date");
   const lastmonthfirstdate=moment().subtract(1, 'months').endOf('month').format('DD-MM-YYYY')
console.log(lastmonthfirstdate);