从 R 中的 hms 中减去一小时而不产生负值

Subtract one hour from hms in R without generating negative values

如何从 hms 中减去一小时? 例如我有

hms("01:00:00")

我想在 00:00:00

中转换它

更新: 例如,当从 00:45:00 中减去一小时时,结果应该是“01:45:00”并且没有负值。

我们可以使用

library(lubridate)
out <- hms("01:00:00")
out@hour <- out@hour - 1
sprintf("%02d:%02d:%02d", out@hour, out@minute, seconds(out))
[1] "00:00:00"

我们可以用as.ITime减去3600

 as.ITime("01:00:00") - 3600
[1] "00:00:00"
hms::hms(lubridate::hms("01:00:00") - lubridate::hours(1))
00:00:00

这有效:

strptime("00:45:00", format = "%H:%M:%S") - 3600