我有一列字符串,其值如:
"Wed Apr 11 15:14:45 GMT+03:00 2018"
我想以格式dd/mm/YYYY hh:mm:ss
。
我使用了as.Date()
,但它给我一个错误:
charToDate(x)
中的错误:字符串不在标准中 明确的格式
尝试anytime
功能,返回NA
。
请告知我应该怎样做才能将其转换为我需要的格式?
答案 0 :(得分:1)
我们可能刚刚在您的时间戳数据上使用strptime
,但它的格式错误。 strptime
不会将时区字符串作为输入,并且您的数字时区中也包含冒号。在下面的简短脚本中,我生成strptime
可以处理的时间戳。
x <- "Wed Apr 11 15:14:45 GMT+03:00 2018"
y <- gsub("(.*)[A-Z]{3}([+-]\\d{2}):(\\d{2})(.*)", "\\1\\2\\3\\4", x)
y
tz <- gsub(".*([A-Z]{3}).*", "\\1", x)
tz
output <- strptime(y, "%a %b %d %H:%M:%S %z %Y", tz)
output
strftime(output, format = "%d/%m/%Y %H:%M:%S", tz)
[1] "Wed Apr 11 15:14:45 +0300 2018"
[1] "GMT"
[1] "2018-04-11 12:14:45 GMT"
[1] "11/04/2018 12:14:45"
延迟编辑我刚看到您还要生成自定义时间戳输出。您可以使用另一个strftime
来处理此问题。
像这样的问题(在R,数据库等中)的一般工作流程是首先将文本解析为日期/时间戳,然后获取该日期对象并使用不同的掩码将其渲染回字符串。