如何从日期获得下周日结束的一周
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
。
我知道 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
。