如何在R中将ddmmyyhhmmss格式字符串向量转换为日期?
解决R语言中字符串转日期时间的问题
嘿,我一眼就看出你踩的坑啦!你的日期字符串是240515055655这种格式,拆解开来是两位年份(24=2024)+两位月份(05=5月)+两位日期(15=15日)+两位小时(05=5点)+两位分钟(56)+两位秒(55),但你之前的方法要么搞混了函数用途,要么没匹配对格式,所以才会出错。
先说说你之前的错误点:
- 用
strftime的时候搞反了!strftime是把已经是日期时间类型的对象转换成字符串,而不是反过来把字符串转成日期时间。要解析字符串成日期时间,应该用strptime才对,这就是为什么你得到全NA的原因。 - 用
as.POSIXct的时候没加format参数,R默认把这些数字字符串当成“从origin开始的秒数”来计算,算出来的年份自然超级离谱,完全不符合预期。
下面是两种正确的解决方法,任选其一就行:
方法1:用strptime解析
# 把字符串解析成POSIXlt类型的日期时间对象 datetime <- strptime(dat24$DateAndTime, format = "%y%m%d%H%M%S", tz = "GMT") # 查看前几个结果 print(head(datetime))
方法2:用as.POSIXct解析(指定format参数)
# 直接解析成POSIXct类型,一定要加format参数匹配你的字符串格式 datetime <- as.POSIXct(dat24$DateAndTime, format = "%y%m%d%H%M%S", tz = "GMT") # 查看前几个结果 print(head(datetime))
用这两种方法,你给的第一个字符串240515055655就会被正确解析成"2024-05-15 05:56:55 GMT",完全符合预期啦!
内容的提问来源于stack exchange,提问作者Thomas André Wang
相关产品推荐
相关产品推荐

