lubridate [R]:日期和要添加到日期的 now() 之间的差异

lubridate [R]: difference between a date and now() to be added to a date

我在 lubridate 方面有点挣扎

我在 df$mydate 变量中有一个过去的日期系列作为 POSIXct。我想用 max(df$mydate)now() 中减去它,然后从该时间间隔中再减去 2 天 - 即使间隔比系列的最新日期与今天之间的差异短 2 天。然后应将获得的时间间隔添加到 df$mydate 中的所有日期,以便日期块从今天提前到过去 2 天结束。

如何使用 lubridate 执行此操作?

当我尝试将 now() - max(df$mydate) 转换为间隔时,我得到一个空间隔。所以我什至没有进入第 2 步 - 将间隔缩短 2 天和第 3 步 - 然后尝试将这个时间长度添加到我拥有的日期。

您可以使用 difftimebase 得到与 now Sys.time() 的时差并减去 2天。

x <- x + (difftime(Sys.time(), max(x), units = "days") - 2)
x
#[1] "2020-09-11 10:32:20 CEST" "2020-09-12 10:32:20 CEST"
#[3] "2020-09-13 10:32:20 CEST" "2020-09-14 10:32:20 CEST"

Sys.time()
#[1] "2020-09-16 10:32:20 CEST"

数据:

(x <- seq(as.POSIXct("2000-01-01 12:00:00"), length.out = 4, by = "days"))
#[1] "2000-01-01 12:00:00 CET" "2000-01-02 12:00:00 CET"
#[3] "2000-01-03 12:00:00 CET" "2000-01-04 12:00:00 CET"

idee有lubridate就是帮你搞定所有时间间隔和日期之间的转换,你不用考虑。这个简单的代码完全可以满足您的需求。

library(lubridate)

my_date <-as.POSIXlt(paste0("2009-08-",1:10))
time_diff <- now() - max(my_date)
time_diff_short = time_diff - 2
my_date + time_diff_short

我发现您需要 my_date 的格式为 POSIXlt