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

R中使用lubridate处理多格式时间转POSIXct失败的解决方法

解决lubridate解析多种时间格式的问题

针对你遇到的多种时间格式解析失败的问题,有两种实用方案:

方案一:给lubridate指定多个解析格式

parse_date_time支持传入格式向量,会依次尝试用每个格式解析时间字符串,同时可以通过year参数控制两位年份的解析规则。

代码示例:

library(lubridate)
# 同时指定两种目标格式,设置两位年份解析为20xx(可根据数据调整)
df$TimeClosed <- parse_date_time(df$TimeClosed, orders = c('mdy HMSp', 'mdy HM'), year = 2000)
  • orders = c('mdy HMSp', 'mdy HM'):告诉函数先尝试解析带AM/PM的时分秒格式,再尝试不带秒和AM/PM的24小时制时分格式
  • year = 2000:将两位年份(如19)解析为2019,默认规则是00-69对应2000-2069,70-99对应1970-1999,可根据你的数据实际情况调整。

方案二:用anytime包自动识别格式

如果时间格式比较杂,anytime包的anytime()函数可以自动识别绝大多数常见时间格式,无需手动指定,返回结果直接是POSIXct类型。

代码示例:

library(anytime)
df$TimeClosed <- anytime(df$TimeClosed)

测试验证

用你的两种时间格式测试:

test_times <- c("09/12/2017 11:08:51 AM", "7/6/19 15:37")

# lubridate方案输出
parse_date_time(test_times, c('mdy HMSp', 'mdy HM'), year=2000)
# [1] "2017-09-12 11:08:51 UTC" "2019-07-06 15:37:00 UTC"

# anytime方案输出
anytime(test_times)
# [1] "2017-09-12 11:08:51 CST" "2019-07-06 15:37:00 CST"

两种方案都能正确完成格式转换。

内容的提问来源于stack exchange,提问作者Jean-Paul Azzopardi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 04:05:28