我有一个数据框,其日期和时间值为字符,从数据库中提取。目前,日期/时间如下所示:inStr > inEnd
我希望它像2017-03-17 11-56-20
似乎没有像在R: How to replace . in a string?
中使用gsub替换所有破折号一样简单我认为这与定位有关,就像告诉R只关注空间一样。想法?
答案 0 :(得分:4)
由于您正在处理日期时间对象,因此可以使用strptime
:
x <- "2017-03-17 11-56-20"
as.character(strptime(x, "%Y-%m-%d %H-%M-%S", tz = ""))
# [1] "2017-03-17 11:56:20"
答案 1 :(得分:3)
尝试匹配以下模式:
(\\d\\d)-(\\d\\d)-(\\d\\d)$
然后将其替换为:
\\1:\\2:\\3
这将完全匹配您的时间戳,因为模式结尾处的终端锚点$
。然后,我们使用冒号和三个捕获组以您希望的方式重建时间戳。
gsub("(\\d\\d)-(\\d\\d)-(\\d\\d)$", "\\1:\\2:\\3", x)
[1] "2017-03-17 11:56:20"
答案 2 :(得分:0)
您也可以使用library(anytime)
来处理格式化(也强制为POSIX
)
library(anytime)
anytime(x)
# [1] "2017-03-17 11:56:20 AEDT"
as.character(anytime(x))
# [1] "2017-03-17 11:56:20"