16

很多人问如何剥离时间并保持日期,但反过来呢?鉴于:

myDateTime <- "11/02/2014 14:22:45"

我想看看:

myTime
[1] "14:22:45"

时区不是必需的。

我已经尝试过(来自其他答案)

as.POSIXct(substr(myDateTime, 12,19),format="%H:%M:%S")

[1] “2013-04-13 14:22:45 新西兰标准时间”

目的是仅按一天中的时间分析几天内记录的事件。

谢谢

编辑:

事实证明,没有纯粹的“时间”对象,所以每个时间也必须有一个日期。

最后我用了

as.POSIXct(as.numeric(as.POSIXct(myDateTime)) %% 86400, origin = "2000-01-01")

而不是字符解决方案,因为我需要对结果进行算术运算。这个解决方案类似于我原来的解决方案,除了可以一致地控制日期 - 在这种情况下为“2000-01-01”,而我的尝试只是在运行时使用当前日期。

4

2 回答 2

27

我认为您正在寻找该format功能。

(x <- strptime(myDateTime, format="%d/%m/%Y %H:%M:%S"))
#[1] "2014-02-11 14:22:45"
format(x, "%H:%M:%S")
#[1] "14:22:45"

那是character,而不是“时间”,但是aggregate如果这就是您所说的“仅按一天中的时间分析几天内记录的事件”,则可以使用。

于 2013-04-13T00:43:07.960 回答
4

如果 GMT 一天内的时间对您的问题有用,您可以使用%%余数运算符获取余数模86400(一天中的秒数)。

stamps <- c("2013-04-12 19:00:00", "2010-04-01 19:00:01", "2018-06-18 19:00:02")
as.numeric(as.POSIXct(stamps)) %% 86400
## [1] 0 1 2
于 2013-04-13T01:27:19.507 回答