如何从日期获得下周日结束的一周

How to get week ending next Sunday from date

我知道 lubridate 有一个函数 ceiling_date 但它提供从给定日期开始的下周六结束的一周。我怎样才能更改它以在下周日结束一周?

> ceiling_date(as.Date('2017-06-16'), 'week')
[1] "2017-06-17 20:00:00 EDT"

我认为这可能是 ceiling_date 的错误,如下所列:https://github.com/tidyverse/lubridate/issues/479

一种解决方法可能是获取 year/week 然后舍入到星期日:

as.Date(paste0(year('2017-06-16'), week('2017-06-16') + ifelse(wday('2017-06-16')==1,0,1), 7), format =  "%Y%U%u")
#[1] "2017-06-18"

来自?strptime

  • %Y 是带世纪的年份(即 2017)
  • %U 是十进制的一年中的第几周
  • %u 是从 1 到 7 的星期几(1 是星期一)

因此我们需要将周移动 1(因此 +1),然后我们将这一天设置为星期日 7