如何导入格式与UTC时间类似的DateTime类型时间数据
日期时间格式解析解决方案
核心问题原因
你当前使用的格式串存在3处不匹配的问题:
- 没有匹配日期和时间之间的分隔符
T,原格式串用了空格分隔日期和时间 - 使用了
%s(Unix时间戳)而非支持小数秒的%OS来匹配带毫秒的秒数部分 - 没有匹配末尾的时区偏移字段
可用写法
方案1(最简单,无需指定格式)
readr的col_datetime默认支持解析标准ISO 8601格式的时间字符串,你给出的示例完全符合该规范,直接省略format参数即可:
cols(`Time Stamp` = col_datetime())
方案2(显式指定格式)
如果需要严格指定格式,使用如下格式串即可:
cols(`Time Stamp` = col_datetime(format = "%Y-%m-%dT%H:%M:%OS%z"))
各占位符含义:
%Y:4位年份%m:2位月份%d:2位日期T:原样匹配时间字符串中的分隔符T%H:24小时制小时%M:分钟%OS:支持小数的秒数,匹配.268毫秒部分%z:匹配带正负号的时区偏移,R 3.2.0及以上版本原生支持带冒号的偏移格式(如-07:00)
低版本R兼容方案
如果使用的R版本低于3.2.0,%z不识别带冒号的偏移,可以先预处理时间字符串,移除时区偏移里的冒号后再解析:
# 示例预处理逻辑 df$`Time Stamp` <- str_replace(df$`Time Stamp`, "([+-]\\d{2}):(\\d{2})$", "\\1\\2")
内容的提问来源于stack exchange,提问作者lettuce_guy
相关产品推荐
相关产品推荐

