28

我有一个关于 R 的 lubridate 包的简单问题。自纪元以来,我有一系列以秒为单位的时间戳。我想将其转换为 YYYY-MM-DD-HH 格式。在base R中,我可以做这样的事情首先将其转换为日期格式

> x = as.POSIXct(1356129107,origin = "1970-01-01",tz = "GMT")
> x
[1] "2012-12-21 22:31:47 GMT"

请注意,上面只是将其转换为日期格式,而不是 YYYY-MM-DD-HH 格式。我将如何在 lubridate 中做到这一点?我将如何使用基础 R 来做到这一点?

非常感谢提前

4

3 回答 3

36

lubridate有一个as_datetime()恰好将 UNIX 纪元时间作为默认起始时间,以使这变得非常简单:

> as_datetime(1356129107)
[1] "2012-12-21 22:31:47 UTC"

更多细节可以在这里找到:https ://rdrr.io/cran/lubridate/man/as_date.html

于 2017-10-13T17:18:17.480 回答
14

德克是正确的。但是,如果您打算使用 lubridate 函数:

paste( year(dt), month(dt), mday(dt), hour(dt) sep="-")

另一方面,如果您想以POSIXct应该使用的方式处理对象,那么这应该满足:

format(x, format="%Y-%m-%d-%H")
于 2012-12-21T23:21:34.203 回答
1

I use the lubridate solution provided by @leerssej

But in case anyone prefers @IRTFM's solution in base R, but also wants minutes and seconds, here's an example of how to do that:

as.POSIXct("2019-03-15 16:17:42" , format="%Y-%m-%d %H:%M:%OS")
于 2020-07-04T16:41:12.647 回答