给出两个日期/时间:
make.unique(strings, sep="")
如何计算从一个到另一个的差异,并作为输出返回:
dt_1 <- lubridate::ymd_hms("2016:08:26 11:29:07")
dt_2 <- lubridate::ymd_hms("2016:07:29 09:29:00")
使用rubridate方法:
> "0:0:28 2:0:7" # 28 days, 2 hours, and 7 seconds difference
返回:
dt_1 - dt_2
如何将此输出转换为 y:m:d h:m:s 格式?我已经搜查了,但没有运气!
提前致谢。
更新<!/强>
@Sotos下面描述的解决方案似乎并不是很有效。使用代码:
> Time difference of 28.08341 days
R返回负数日! &#34; 3:0:-1 23:0:0&#34;
对于我的生活,我无法弄清楚为什么会这样,以及如何避免它。正确的答案应该是&#34; 2:11:30 23:0:0&#34; (或2年,11个月,30天,23小时,0分钟,0秒)。
有什么建议吗?
答案 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 = " ")
请注意,较早的日期/时间应始终先行。
答案 1 :(得分:0)
您可以使用as.period
将数字转换为句点。从文件中,
as.period将Interval,Duration,difftime和数字类对象更改为具有指定单位的Period类对象
所以你只需要在as.period
中包装所有内容,即
lubridate::as.period(dt_1 - dt_2)
#[1] "28d 2H 0M 7S"