lubridate hour 不处理时间

lubridate hour doesn't handle chron times

我正在尝试从 R 中的 chron 时间中提取小时数。lubridate::hour 的帮助说明如下:

Date-time must be a POSIXct, POSIXlt, Date, Period, chron, yearmon, yearqtr, zoo, zooreg, timeDate, xts, its, ti, jul, timeSeries, and fts objects.

但是好像不行:

library(chron)
library(lubridate)
hour(chron(times. = "01:02:03"))

报错

Error in as.POSIXlt.default(x, tz = tz(x)) : 
do not know how to convert 'x' to class “POSIXlt”

这是一个错误吗?

我知道可以改用 chron::hours,这在大多数情况下更可取。但是 lubridate 的部分吸引力在于拥有一组函数来处理各种日期时间数据,并且必须在任何地方将 hour 更改为 hours 与此背道而驰。

问题是tt下面:

library(chron)
tt <- chron(times. = "01:02:03")
class(tt)
## [1] "times"

实际上不是 class "chron"。它属于 class "times"

1) 它也需要一个日期部分才能成为 class "chron" 所以这会起作用:

library(lubridate)
hour(chron(0, tt))
## [1] 1

2) 或:

hour(as.chron(tt)) # as.chron always produces a chron object
## [1] 1

3) 不使用 lubridate 的替代方案如下,基于 chron 将一天表示为 1,因此 1 小时为 1/24:

trunc(24 * as.numeric(tt))
## [1] 1