首页 > 解决方案 > 计算R中不同日期范围的闰日

问题描述

我正在使用 R 和 lubridate。

我需要计算在一堆不同日期范围内发生的闰日数。我已经做了很多谷歌搜索,但大多数结果似乎只是想知道某些年份是否是闰年,但不要考虑您每年的开始和结束位置,或者是针对我不熟悉的不同程序。

我在想一个函数将是最好的方法,但正在努力让代码下降。

我的想法是使用 lubridate 的函数计算日期范围内的闰年数leap_year,然后检查期间开始和结束时的部分年份,并在需要时添加/减去闰年计数。

start_date <- as.Date("2008-03-31")
end_date <- as.Date("2020-09-30")

years_list <- seq(start_date, end_date, by="years")
leap_days <- sum(leap_year(years_list))

下一步是检查部分年份并leap_days在需要时添加/减去,这是我正在努力的地方。这种情况的预期结果是 3 年(2012 年、2016 年和 2020 年闰年)。最终,我会检查很多不同的日期范围,而不仅仅是这个。

任何帮助表示赞赏。

标签: rlubridate

解决方案


如果您接受“闰日”始终是 2 月 29 日这一前提,那么也许

grep("-02-29", seq(start_date, end_date, by = "day"), value = TRUE)
# [1] "2012-02-29" "2016-02-29" "2020-02-29"

推荐阅读