从Sys.time减去时间()

时间:2016-07-05 16:19:00

标签: r datetime time

使用=> part uuid INTERFACE DEVICE:PARTITION variable-to-store-in 返回

format(Sys.time(), "%Y-%m-%dT%H:%M:%00")

如何从此值中减去两个小时?我想要达到的最终结果如下:

"2016-07-05T11:15:00"

非常感谢任何帮助。感谢。

3 个答案:

答案 0 :(得分:1)

这是一种非常简单的方法,无需使用库:

> format(Sys.time(), "%Y-%m-%dT%H:%M:%00")
[1] "2016-07-05T12:22:00"
> format(Sys.time()-2*60*60, "%Y-%m-%dT%H:%M:%00")
[1] "2016-07-05T10:22:00"

答案 1 :(得分:1)

正如@Marichyasana答案中指出的那样,如果以秒表示,则可以直接从Sys.time()中添加/减去任何时间。因此,2小时对应2 * 60 * 60秒,结果是

now <- Sys.time()
format(now, "%Y-%m-%dT%H:%M:%00")
[1] "2020-04-24T17:34:00"
format(now - 2 * 60 * 60, "%Y-%m-%dT%H:%M:%00")
[1] "2020-04-17T19:34:00"

我想提出一个替代解决方案,使您可以指定添加/减去单位(“秒”,“分钟”,“小时”,“天”,“周”,“月”)的时间段。 ,“年”)。对于您的情况,减去2个小时,它显示为

format(seq(now, by = "-2 hours", length.out = 2)[2], "%Y-%m-%dT%H:%M:%00")
[1] "2020-04-17T19:34:00"

以类似的方式,您可以添加/减去其他时间段

增加1年

format(seq(now, by = "1 year", length.out = 2)[2], "%Y-%m-%dT%H:%M:%00")
[1] "2021-04-24T19:34:00"  

外卖6周

format(seq(now, by = "-6 week", length.out = 2)[2], "%Y-%m-%dT%H:%M:%00")
[1] "2020-03-13T18:34:00"

减去1个月

format(seq(now, by = "-1 month", length.out = 2)[2], "%Y-%m-%dT%H:%M:%00")
[1] "2020-03-24T19:34:00"

答案 2 :(得分:0)

我们可以使用hours

中的lubridate
library(lubridate)
ymd_hms(str1) - lubridate::hours(2)
#[1] "2016-07-05 19:51:00 UTC"

数据

str1 <- format(Sys.time(), "%Y-%m-%dT%H:%M:%00")
str1
#[1] "2016-07-05T21:51:00"