将ISO 8601格式的字符串转换为日期时间对象

编程语言 2026-07-10

我有以ISO 8601格式表示的字符数据,想把它转换成一个日期时间变量。我尝试了以下方法:

library(lubridate)

datetime_str <- "2026-04-02T02:16-04:00"

dt <- ymd_hms(datetime_str)
#> Warning: All formats failed to parse. No formats found.

dt <- ymd_hm(datetime_str)
#> Warning: All formats failed to parse. No formats found.

class(dt)
#> [1] "POSIXct" "POSIXt"

print(dt)
#> [1] NA

如果我在 datetime_str 上加上秒数,它可以正常工作。不幸的是,我的日期时间输入记录不包含秒数。

我应该怎么解决这个问题?

解决方案

你可以使用专门的 iso8601,也可以使用更通用的 readr

datetime_str <- "2026-04-02T02:16-04:00"

iso8601::iso8601todatetime(datetime_str)
[1] "2026-04-02 06:16:00 GMT"

readr::parse_datetime(datetime_str)
[1] "2026-04-02 06:16:00 UTC"
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章