Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在R中转换时间戳?_R_Date - Fatal编程技术网

在R中转换时间戳?

在R中转换时间戳?,r,date,R,Date,我有一列字符串,其值如下: "Wed Apr 11 15:14:45 GMT+03:00 2018" 我想将其转换为以下格式的日期:dd/mm/YYYY hh:mm:ss 我已将用作.Date(),但它返回了一个错误: charToDate(x)中出错:字符串不在标准格式中 明确的格式 尝试了任何时候函数,它返回NA 请告知我应该如何将其转换为我需要的格式?我们本可以在您的时间戳数据上使用strtime,但格式不正确strtime不接受时区字符串作为输入,并且数字时区中有冒号。在下面的简短脚本

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

"Wed Apr 11 15:14:45 GMT+03:00 2018"
我想将其转换为以下格式的日期:
dd/mm/YYYY hh:mm:ss

我已将
用作.Date()
,但它返回了一个错误:

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

尝试了
任何时候
函数,它返回
NA

请告知我应该如何将其转换为我需要的格式?

我们本可以在您的时间戳数据上使用
strtime
,但格式不正确
strtime
不接受时区字符串作为输入,并且数字时区中有冒号。在下面的简短脚本中,我生成了一个
strtime
可以处理的时间戳

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"

x
format
用于输出,而不是解析。非常感谢您的出色解决方案,我正在尝试理解第二行中的正则表达式。总之,非常简单和天才!对
gsub
的第一次调用删除了
GMT
和冒号,留下了一个
strtime
可以解析的时间戳。对
gsub
的第二次调用提取了
GMT
,而
strtime
希望将其作为一个单独的参数,而不是嵌入时间戳中。您没有留下任何文字,您是一位真正的专业人士,非常感谢!我很高兴能从你这样的专业人士那里得到答案@steves谢谢,但是请不要搞错。
[A-Z]{3}
与时区字符串匹配的人。