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

R中使用lubridate包解析带T日期字符串返回NA如何解决

报错核心原因

mdy_hms()默认固定按月、日、年的顺序识别日期字段,你的输入字符串是「年-月-日」排序的ISO标准时间格式,字段顺序和函数预期不匹配,所以解析失败返回NA。
之前parse_date_time()调用失败,是因为你传入了带%的完整strptime格式串,该函数的orders参数需要传入简化的字段顺序标记,无法识别完整格式写法。

可行解决方案

你不需要保留时间部分,以下三种方法都可以直接得到R识别的标准Date类型,最终结果都是2020-07-10,自动丢弃时分秒部分:

  • 方法1:用lubridate匹配格式的解析函数
    对应年-月-日的时间格式,直接换用ymd_hms()即可,函数会自动识别T分隔的时间串,不需要手动写完整格式参数,解析后转Date类型即可:
    library(lubridate)
    date_res <- as.Date(ymd_hms("2020-07-10T00:00:00", tz = Sys.timezone()))
    
  • 方法2:基础R直接截断转换(无需加载第三方包,效率最高)
    你的输入格式固定,前10位字符就是完整的年-月-日日期段,直接截取后用基础函数转换即可:
    date_res <- as.Date(substr("2020-07-10T00:00:00", 1, 10))
    
  • 方法3:修正parse_date_time()的参数
    给orders参数传入正确的简化顺序标记即可正常解析,之后转Date类型丢弃时间:
    library(lubridate)
    date_res <- as.Date(parse_date_time("2020-07-10T00:00:00", orders = "ymdHMS", tz = Sys.timezone()))
    

内容的提问来源于stack exchange,提问作者four-eyes

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 09:01:09