将ISO 8601格式的字符串转换为日期时间对象
我有以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导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。