剥去日期并保留时间

时间:2013-04-13 00:10:55

标签: r datetime

很多人都会问如何剥夺时间并保留日期,但另一方面呢?给出:

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 NZST”

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

由于

修改

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

最后我用了

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

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

2 个答案:

答案 0 :(得分:22)

我认为你正在寻找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就可以使用{{1}}。

答案 1 :(得分:4)

如果格林威治标准时间内的时间对您的问题有用,则可以使用余数运算符%%获取此值,其余模数为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