正则表达式删除秒和毫秒

时间:2013-08-28 09:18:34

标签: regex r

这与我之前的问题regex to add hypen in dates相关联。

我现在希望能够删除秒和毫秒/再次使用gsub将其更改为零

即。类似的东西:

x <- c("20130603 00:00:03.102","20130703 00:01:03.103","20130804 00:03:03.104")


y <- gsub([REGEX PATTERN TO MATCH],[REPLACEMENT PATTERN TO INSERT HYPHEN and REMOVE SECONDS] ,x)

> y
[1] "2013-06-03 00:00:00" "2013-07-03 00:01:00" "2013-08-04 00:03:00"

3 个答案:

答案 0 :(得分:3)

您可以使用strptime将对象解析为POSIXlt个对象,这些对象在打印时完全采用您期望的格式:

y <- strptime(x, "%Y%m%d %H:%M:%S")
# [1] "2013-06-03 00:00:03" "2013-07-03 00:01:03" "2013-08-04 00:03:03"

要删除秒数,请使用trunc

y <- trunc(y, units = "mins")
# [1] "2013-06-03 00:00:00" "2013-07-03 00:01:00" "2013-08-04 00:03:00"

将对象作为日期/时间对象将打开很多门,但如果您真的想将输出存储为字符向量,那么只需使用as.character

y <- as.character(y)

答案 1 :(得分:2)

lubridate版本:

library(lubridate)
dt <- ymd_hms(x)
dt2 <- update(dt, seconds = 0)

答案 2 :(得分:1)

你可以尝试这个正则表达式,我添加了一点:

gsub("(\\d{4})(\\d{2})(\\d{2}) (\\d{2}:\\d{2}).*", "\\1-\\2-\\3 \\4:00", subject, perl=TRUE);

demo on regex101