在R lubridate包中,小时函数返回错误的小时

时间:2019-06-28 17:26:39

标签: r lubridate hour

我有一个POSIXct时间对象,我想提取小时。但是返回了错误的时间。我的输出如下。

> t
[1] "2018-04-09 09:05:25 CEST"
> class(t)
[1] "POSIXct"
> hour(t)
[1] 7

谁知道该如何解决?预先感谢!

乔迪

2 个答案:

答案 0 :(得分:0)

我发现lubridate的{​​{1}}和ymd()(以及其他类似ymd_hms()的组合)非常方便:

ydm()

答案 1 :(得分:0)

感谢大家的帮助。

我找到了this answer on StackOverflow提出的解决方案。

像您一样,我无法在孤立的环境中重现答案。但是,由于我的“ t”值来自DataFrame,因此隐式类型转换似乎导致该值的存储方式不同于隔离环境中的存储方式。

为了进行比较,在隔离的环境中,我会得到以下信息,

> t = as.POSIXct("2018-04-09 09:05:25")
> t
[1] "2018-04-09 09:05:25 CEST"
> as.character(t)
[1] "2018-04-09 09:05:25"

而在我自己的代码中,我将从DataFrame中得到t

> t = tb[i, "time"]
> t
[1] "2018-04-09 09:05:25 CEST"
> as.character(t)
[1] "1523257525"

换句话说,内部有些不同-顺便说一句,我仍然无法掌握。

但是可以通过以下方式进行“固定”:

t = as.POSIXct(as.numeric(t), origin="1970-01-01")