从R中的当前日期获取上个月的开始日期和结束日期

时间:2012-11-07 11:15:41

标签: r date

有没有简单的方法可以从R当前日期获取上个月的开始日期和结束日期?

我只有当前日期。从它,我想得到上个月,上个月的开始日期,上个月的结束日期。

currentDate<-Sys.Date() #return today's date as "2012-11-07"

我希望上个月的开始日期为2012-10-01,结束日期为2012-10-31,从今天开始。

6 个答案:

答案 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()