转换R中的时间戳?

时间:2018-05-23 11:17:58

标签: r date

我有一列字符串,其值如:

"Wed Apr 11 15:14:45 GMT+03:00 2018"

我想以格式dd/mm/YYYY hh:mm:ss

将其转换为日期

我使用了as.Date(),但它给我一个错误:

  

charToDate(x)中的错误:字符串不在标准中   明确的格式

尝试anytime功能,返回NA

请告知我应该怎样做才能将其转换为我需要的格式?

1 个答案:

答案 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"

Demo

延迟编辑我刚看到您还要生成自定义时间戳输出。您可以使用另一个strftime来处理此问题。

像这样的问题(在R,数据库等中)的一般工作流程是首先将文本解析为日期/时间戳,然后获取该日期对象并使用不同的掩码将其渲染回字符串。