我尝试使用Sys.time()
查找开始日期到当前时间的天数持续时间。我使用以下命令来查找持续时间。但是,R中的输出是完全错误的。
person$duration <- lubridate::interval(as.Date(person$create_date, "%m/%d/%y"),Sys.Date()) %/% days()
输出:
Name create_date duration
A 09/23/2014 -811
B 05/05/2014 -670
应该是 1380天,而不是-811。我不确定为什么它是负数,为什么特别是'-811'或'-670'。
答案 0 :(得分:4)
您非常亲密。由于您的年份由4位数字组成,因此您需要使用大写字母Y。
library(lubridate)
interval(as.Date("09/23/2014", "%m/%d/%Y"),Sys.Date()) %/% days()
给予1380。
在您的代码中,只使用了前两位数字,并且假设您要使用当前世纪,因此是2020年。确切的说:如果您每年提供两个数字,则介于69和99之间的值将转换为1969年-1999,值介于00到68到2000-2068之间。
interval(as.Date("09/23/2020", "%m/%d/%Y"),Sys.Date()) %/% days()
也给出-811。
答案 1 :(得分:3)
使用简单的区别
as.numeric(as.Date("2018-07-05") - Sys.Date())
# use abs() if the date it's in the past