繁体   English   中英

如何获取当月所有日期的向量

[英]How to get a vector of all dates in the current month

目标很简单,我想要一个由本月所有日期组成的向量。

为什么?

因为稍后我将能够转换这个向量并获得该月的第一天,或者,一个仅包含该月 1 日和 16 日的向量,或者甚至是包含该月所有星期一的向量...列表继续,但 POSIXlt 应该更好地为我们服务,因为它也存储工作日。


require("lubridate")
v.d.CheckDates <- as.POSIXlt(seq(as.POSIXlt(Sys.Date() - days(31)), length.out=62, by="day"))
v.d.CheckDates[v.d.CheckDates$mon == as.numeric(format(Sys.Date() , format = "%m")) - 1]

它基本上是创建一个以今天(第一行)为中心的 62 天向量,然后修剪其他月份(第二行)

那么,有没有人有更切割更有效(最好也是一个衬里)的方法吗?

您可以使用floor_date获得当月的第一个日期ceiling_date拿到下个月减的第一个日期- 1获得当月的最后一天,并创建序列。

library(lubridate)
todays_date <- Sys.Date()
seq(floor_date(todays_date, 'month'), 
    ceiling_date(todays_date, 'month') - 1, by = 1)

还有其他类似的变化,

floor_date(todays_date, 'month') + 1:days_in_month(todays_date) - 1

seq(floor_date(todays_date, 'month'), 
               length.out = days_in_month(todays_date), by = 1)

这将返回类'Date'对象,在基 R 中有函数以及lubridate来获取您想要的 Date 的任何部分。

timeperiodsR有一个方便的功能:

timeperiodsR::this_month(part = "sequence")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM