2014-11-14 474 views
22

我試圖使用,以獲得上月的最後一天:凡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.

我該怎麼解決我?

非常感謝您的幫助。

回答

64

只需添加一個endOf('month')您的來電:

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

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

+3

有關詳細信息來檢查文檔爲['#endOf'](http://momentjs.com/docs/# /操縱/結束/)。還可以查看其對應的['#startOf'](http://momentjs.com/docs/#/manipulating/start-of/)。 – 2015-01-15 23:42:28

+4

其他方式var dateFrom = moment(dateFrom).startOf('month')。subtract(1,'days'); ;-) – Cooxkie 2016-09-21 09:11:23

0

一個更簡單的解決辦法是使用moment.date(0).date()函數佔用當前月份的1到n天,但傳遞零或負數將生成上個月的日期。

例如,如果當前日期是2月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>