R 如何从日期到下周日结束一周

R 如何从日期到下周日结束一周,r,lubridate,R,Lubridate,我知道lubridate有一个函数ceiling\u date,但它提供了从给定日期到下一个星期六结束的一周。我怎样才能把它改成下个星期天结束 > ceiling_date(as.Date('2017-06-16'), 'week') [1] "2017-06-17 20:00:00 EDT" 我认为这可能是ceiling\u date的错误,如下所示: 一种解决方法可能是抓取年度/周,然后轮到周日: as.Date(paste0(year('2017-06-16'), week('20

我知道lubridate有一个函数
ceiling\u date
,但它提供了从给定日期到下一个星期六结束的一周。我怎样才能把它改成下个星期天结束

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

我认为这可能是
ceiling\u date
的错误,如下所示:

一种解决方法可能是抓取年度/周,然后轮到周日:

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"
?strtime

  • %Y
    是世纪之年(即2017年)
  • %U
    是十进制的一年中的一周
  • %u
    是一周中的第1-7天(1是星期一)

因此,我们需要将一周的时间调整为
1
(因此是
+1
),然后将日期设置为周日
7
上限日期(as.date('2017-06-16'),'week')+60*60*24
?我认为这实际上可能是
上限日期的错误。请参阅(亨里克在我的另一个答案中指出了这一点)如果日期是周日,手动调整它将是一个问题:
limit_日期(as.date('2017-06-18'),'week')+60*60*24[1]“2017-06-25 20:00:00 EDT”
@MikeH。是否有变通办法?这是否有效?如日期('2017-06-16'),'week')+周(1)
?对不起,本应在问题中澄清这一点,但如果给定的日期是星期日,则我希望返回一个星期日<代码>2017-06-18停留
2017-06-18
好的,我编辑了它。只是需要添加一点条件来检查是否已经是星期天了