【发布时间】:2018-05-27 04:55:52
【问题描述】:
给定两个日期/时间:
dt_1 <- lubridate::ymd_hms("2016:08:26 11:29:07")
dt_2 <- lubridate::ymd_hms("2016:07:29 09:29:00")
如何计算两者之间的差异,并作为输出返回:
> "0:0:28 2:0:7" # 28 days, 2 hours, and 7 seconds difference
使用以下润滑方法:
dt_1 - dt_2
返回:
> Time difference of 28.08341 days
如何将此输出转换为 y:m:d h:m:s 格式?我已经搜索过,但没有任何运气!
提前致谢。
更新!
看来@Sotos 下面描述的解决方案我不太奏效。使用代码:
dt_1 <- lubridate::ymd_hms("2001:1:1 2:0:0")
dt_2 <- lubridate::ymd_hms("2004:1:1 1:0:0")
paste(
paste(
year(as.period(int_diff(c(dt_2, dt_1)))),
month(as.period(int_diff(c(dt_2, dt_1)))),
day(as.period(int_diff(c(dt_2, dt_1)))),
sep = ":"),
paste(
hour(as.period(int_diff(c(dt_2, dt_1)))),
minute(as.period(int_diff(c(dt_2, dt_1)))),
second(as.period(int_diff(c(dt_2, dt_1)))),
sep = ":"),
sep = " ")
R 返回负数! “3:0:-1 23:0:0”
在我的一生中,我无法弄清楚为什么会发生这种情况以及如何避免它。正确答案应该是“2:11:30 23:0:0”(或 2 年 11 个月 30 天 23 小时 0 分钟 0 秒)。
有什么建议吗?
【问题讨论】:
-
啊,这太简单了。谢谢!
标签: r