R语言求取月份的最后一天

lubridate包

date_test=as.Date('2015-1-31')

date_test %m+% months(2)

[1]"2015-03-31"

 具体原因不明

>as.Date('2015-5-5') %m+% months(10)
[1] "2016-03-05"

针对月底的情况:

>as.Date('2015-11-30') %m+% months(2)
[1] "2016-01-30"       并不是1月的月底

> as.Date('2015-12-31') %m+% months(1)
[1] "2016-01-31"  可以得到月底

> as.Date('2015-10-31') %m+% months(1)
[1] "2015-11-30"

> as.Date('2015-10-30') %m+% months(4)
[1] "2016-02-29"

针对以31号为月底的相加后会正确的得到月底,以30号为月底的并不能准确的到月底(相加后等于2月份的除外)

> as.Date('2015-12-31') %m+% months(2)
[1] "2016-02-29"  当超过30天时,针对相加后为2月份的情况,相加可以得到2月月底

> as.Date('2015-12-31') %m+% months(14)
[1] "2017-02-28

floor_date(as.Date('2015-8-8'),'month')
[1] "2015-08-01"    获取本月月首

ceiling_date(as.Date('2015-4-5'),'month')
[1] "2015-05-01"    获取下月月首

利用floor_date及ceiling_date取日期再减一即可

原文地址:https://www.cnblogs.com/liuting1990/p/6405571.html