You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R中Lubridate无法正确将dd/mm/yy hh:mm:ss格式转为POSIXct

解决CSV日期时间列转POSIXct格式返回NA的问题

嘿,我明白你现在卡在哪了——用ymd_hms()处理dd/mm/yy hh:mm:ss格式的时间会返回NA,核心原因是这个函数默认是按**年(Year)-月(Month)-日(Day)的顺序解析字符串,但你的datetime列是日(Day)-月(Month)-年(Year)**的格式(比如26/03/2013 21:50),格式顺序完全不匹配,自然识别失败啦!

修正后的代码

把ymd_hms()换成对应顺序的dmy_hms()函数就能解决问题,时区转换的逻辑可以保留:

library(dplyr)
library(lubridate)

GRS$datetimelocal <- GRS$`datetime` %>%
  dmy_hms(tz = "UTC") %>%  # 按日/月/年+时分秒的格式解析,先转为UTC时区的POSIXct对象
  with_tz(tzone = "Australia/Brisbane")  # 转换为布里斯班本地时区

验证示例值

拿你给出的26/03/2013 21:50测试一下:

test_time <- "26/03/2013 21:50"
dmy_hms(test_time, tz = "UTC") %>% with_tz("Australia/Brisbane")
# 输出应为:"2013-03-27 07:50:00 AEST"(布里斯班比UTC快10小时)

额外小提示

如果你的数据里存在部分不带秒的时间格式(比如26/03/2013 21:50),可以用parse_date_time()兼容多种格式:

parse_date_time(GRS$`datetime`, orders = c("dmy HMS", "dmy HM"), tz = "UTC")

这样能同时识别带秒和不带秒的时间字符串,避免出现遗漏。

内容的提问来源于stack exchange,提问作者mikejwilliamson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:57:39