我正在编写一个小代码,比较两次并找到差异并以 HH:MM:SS 格式显示。
library(magrittr)
library(lubridate)
s1 <- ymd_hms(Sys.time())
s2 <- ymd_hms(Sys.time()) +200
d1 <- seconds_to_period(as.numeric(difftime(s2, s1, units = "secs")));
d2 <-sprintf('%02d:%02d:%02d', hour(d1), minute(d1), second(d1));
d2
[1]“00:03:21”
我尝试的另一种方法是通过管道技术。但在这里,我收到一个错误。
s1 <- ymd_hms(Sys.time())
s2 <- ymd_hms(Sys.time()) +200
d3 <- difftime(s2, s1, units = "secs") %>% as.numeric() %>% seconds_to_period() %>% sprintf('%02d:%02d:%02d', hour(.), minute(.), second(.))
d3 % as.numeric() %>% secondary_to_period() %>%
+ sprintf('%02d:%02d:%02d', 小时(.), 分钟(.), 秒(.))
sprintf(., "%02d:%02d:%02d", 小时(.), 分钟(.), 秒(.)) 中的错误:
'fmt' 不是字符向量
点操作似乎不适用于这种情况。我应该怎么办?
另外,有没有更好的方法来实现时间功能?