从 chron 对象中提取月份时的警告消息

Warning message when extract months from chron object

我正在维护一些同时使用 lubridate 和 chron 包的代码,并且出现了一个新警告。

警告信息: tz():不知道如何为 class dates/times 的对象计算时区;返回 "UTC"。此警告将成为 lubridate 的下一个主要版本中的错误。

从 chron 制作的对象中提取月份时会出现这种情况。

library(lubridate)
library(chron)
xdate <- structure(c(23831, 23832, 23833, 23834, 23835, 23836), 
         format = "d/m/y", origin = c(month = 1, day = 1, year = 1900), class = c("dates", "times"))


lubridate::month(xdate)

我可以通过将 xdate 包装在 as.Date 中来解决这个问题 lubridate::month(as.Date(xdate))。产生的日期是正确的。这个方法可以吗?

编辑:我看到另一种解决方法是 chron::month.day.year(xdate)$month

我认为这没问题,但为了避免出现问题,最好不要为此使用 lubridate。 chron 有 monthsmonday.day.year,我们还提供一些其他转换:

as.integer(months(xdate))  # uses chron:::months.default
## [1] 4 4 4 4 4 4

c(months(xdate))
## [1] 4 4 4 4 4 4

month.day.year(xdate)$month # uses chron::month.day.year
## [1] 4 4 4 4 4 4

as.integer(format(as.Date(xdate), "%m"))
## [1] 4 4 4 4 4 4

library(zoo)
cycle(as.yearmon(xdate))
## [1] 4 4 4 4 4 4