有没有简单的方法可以从R当前日期获取上个月的开始日期和结束日期?
我只有当前日期。从它,我想得到上个月,上个月的开始日期,上个月的结束日期。
currentDate<-Sys.Date() #return today's date as "2012-11-07"
我希望上个月的开始日期为2012-10-01,结束日期为2012-10-31,从今天开始。
答案 0 :(得分:33)
许多软件包都有方便的日期功能,但要自己动手:
月初函数:
som <- function(x) {
as.Date(format(x, "%Y-%m-01"))
}
和月末功能(虽然你不需要这个):
eom <- function(x) {
som(som(x) + 35) - 1
}
这应该让你去。例如,要获得上个月的结束:
som(Sys.Date()) - 1
[1] "2012-10-31"
和月初:
som(som(Sys.Date()) - 1)
[1] "2012-10-01"
答案 1 :(得分:18)
使用lubridate
它是小菜一碟:
library(lubridate)
floor_date(Sys.Date() - months(1), "month")
R中有很多好的库。好像你已经创建了所需的一切。
更新版本:
library(lubridate)
floor_date(as.Date("2011-03-29"), "month") - months(1)
这个更正与3月29日一起运作。
答案 2 :(得分:16)
您可以使用库lubridate
,它非常擅长日期算术。
library(lubridate)
currentDate <-Sys.Date()
# end of previous month:
eopm <- currentDate - days(day(currentDate))
# [1] "2012-10-31"
# start of previous month:
sopm <- currentDate - days(day(currentDate))
sopm <- sopm - days(day(sopm) - 1)
# [1] "2012-10-01"
答案 3 :(得分:12)
使用lubridate包的另一个选择是使用 rollback 函数,正如描述所说的那样,正是这样做的。
回滚会将日期更改为上个月的最后一天或该月的第一天。可选地,新日期可以保留相同的小时,分钟和秒信息。
CALayer is not animable
答案 4 :(得分:2)
上个月开始日期:
sftp -s /usr/libexec/sftp-server docker@192.168.99.100
上个月结束日期:
format(Sys.Date() - 30, '%Y-%m-01')
答案 5 :(得分:0)
使用timeperiodsR
获取任何期间的开始和结束日期。
# install.packages("timeperiodsR")
timeperiodsR::previous_month()