将ddmmyyhhmmss字符串的向量转换为日期

时间:2018-03-23 14:22:39

标签: r

相当直接,我通常不会涉足R.当通常的技巧似乎不起作用时,让它变得有点挑衅。

我理解strftime是日期时间解析器,所以我试着没有运气,假设它的格式应该受到责备。

datetime <- strftime(dat24$DateAndTime, tz="GMT", format="%d%m%Y%H%M%S")
print(head(datetime))
Output >> [1] NA NA NA NA NA NA

我尝试了as.POSIXct,它产生了一个结果,但结果非常错误。再次,我猜测它的缺失格式,也许是原点。

datetime <-as.POSIXct(dat24$DateAndTime, origin = "1970-01-01 01:01.01", tz = "GMT")

print(head(dat24$DateAndTime))
Output >> [1] 240515055655 240515055757 240515055857 240515055958 240515060058 240515060200

print(head(datetime))
Output >> [1] "9591-08-15 02:41:55 GMT" "9591-08-15 02:43:37 GMT" "9591-08-15 02:45:17 GMT" "9591-08-15 02:46:58 GMT" "9591-08-15 03:55:18 GMT" "9591-08-15 03:57:40 GMT"

所以问题很简单,我如何转换这个列表?

1 个答案:

答案 0 :(得分:1)

把它写成答案......

您可以使用来自lubridate的dmy_hms

library(lubridate)

dts <- sprintf('%02d%02d%02d%02d%02d%02d',sample(1:28,10,T),sample(1:12,10,T),sample(2010:2018,10,T),sample(0:23,10,T),sample(0:59,10,T),sample(0:59,10,T))

dts[1]
# [1] "27022016185346"


dmy_hms(dts)
# [1] "2016-02-27 18:53:46 UTC" "2016-05-05 07:13:08 UTC" "2016-01-27 08:34:16 UTC" "2017-02-19 15:11:15 UTC"
# [5] "2016-09-01 20:59:21 UTC" "2012-03-12 01:30:15 UTC" "2014-12-06 06:49:51 UTC" "2016-01-18 17:38:44 UTC"
# [9] "2010-12-26 01:51:51 UTC" "2010-06-17 08:41:44 UTC"