日期差异计算不准确

Calculation inaccuracy in date difference

我试图使用 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”。

使用简单的差异

as.numeric(as.Date("2018-07-05") - Sys.Date())
# use abs() if the date it's in the past

你们非常亲密。由于您的年份由 4 位数字组成,因此您需要大写 Y。

library(lubridate)
interval(as.Date("09/23/2014", "%m/%d/%Y"),Sys.Date()) %/% days()

给出 1380。

在您的代码中,它只需要前 2 位数字,并且假定您需要当前世纪,即 2020 年。准确地说:如果您提供两个数字作为年份,则转换 69 到 99 之间的值到 1969-1999,00 到 68 之间的值到 2000-2068。

interval(as.Date("09/23/2020", "%m/%d/%Y"),Sys.Date()) %/% days()

也给出-811。