2016-02-04 101 views
0

從2013-09-30(9月的最後一天)到2013-10-31(10月的最後一天),我無法使用lubridate增加1個月。日期增加1個月

文檔中提供的示例效果很好:

# get a vector of months (last day of the month) 
vct_dates <- ymd("2013-01-31") %m+% months(0:11) 

下面給出了2013年10月31日如預期:

vct_dates[10] 

而且,下面給出2013年9月30日:

vct_dates[9] 

但是,當我嘗試增加2013-09-30一個月,我得到了錯誤的答案:

# should be 2013-10-31 but is 2013-10-30 
vct_dates[9] %m+% months(1) 

任何想法......?

+0

「但是,當我嘗試增加2013-09-30一個月時,我得到了錯誤的答案」。其實,它給了你正確的答案。 –

+0

好的,謝謝PL ...「我收到了與我期待的不同的答案」 – markthekoala

回答

1

什麼:

vct_dates <- (ymd("2013-09-30") + days(1)) %m+% months(0:11) + days(-1) 
1

無論[R也不lubridate有「最後一天在本月的概念。但是,你可以欺騙它:取下個月的第一天,增量由一個月 - 和減去一天:

R> seq(as.Date("2016-10-01"), by="1 month", len=2)-1 
[1] "2016-09-30" "2016-10-31" 
R> 

這個工作在基礎R沒有任何的附加軟件包。