【问题标题】:Best way to get the 3 previous Mondays (as a date) based off a another date根据另一个日期获取前 3 个星期一(作为日期)的最佳方法
【发布时间】:2022-11-17 04:03:25
【问题描述】:

我的目标是根据日期获取前 3 个星期一的日期格式 2022-01-31

我知道我可以使用以下内容获得 1 星期一。

例如,今天是 2022-11-16,星期一是 2022-11-14

library(lubridate)
todays_date <- as.Date('2022-11-16')
floor_date(todays_date, 'week') + 1       

我也可以 - 6 获取上周星期一的日期,但如果“今天的日期”发生变化,那么它也会发生变化吗?

floor_date(todays_date, 'week') - 6

预期目标

捐赠日期 = 2022-11-16

  • 第一个星期一 = 2022-11-14
  • second_monday = 2022-11-07
  • third_monday = 2022-10-31
  • 第四个星期一 = 2022-10-24

【问题讨论】:

    标签: r lubridate


    【解决方案1】:

    日期存储为整数,因此只需减去 7 的序列即可得到之前的星期一:

    todays_date <- Sys.Date()
    
    lubridate::floor_date(todays_date, 'week') + 1 - (0:2) * 7
    #> [1] "2022-11-14" "2022-11-07" "2022-10-31"
    

    这是多年来的星期一:

    lubridate::floor_date(todays_date, 'week') + 1 - (0:52) * 7
    #>  [1] "2022-11-14" "2022-11-07" "2022-10-31" "2022-10-24" "2022-10-17"
    #>  [6] "2022-10-10" "2022-10-03" "2022-09-26" "2022-09-19" "2022-09-12"
    #> [11] "2022-09-05" "2022-08-29" "2022-08-22" "2022-08-15" "2022-08-08"
    #> [16] "2022-08-01" "2022-07-25" "2022-07-18" "2022-07-11" "2022-07-04"
    #> [21] "2022-06-27" "2022-06-20" "2022-06-13" "2022-06-06" "2022-05-30"
    #> [26] "2022-05-23" "2022-05-16" "2022-05-09" "2022-05-02" "2022-04-25"
    #> [31] "2022-04-18" "2022-04-11" "2022-04-04" "2022-03-28" "2022-03-21"
    #> [36] "2022-03-14" "2022-03-07" "2022-02-28" "2022-02-21" "2022-02-14"
    #> [41] "2022-02-07" "2022-01-31" "2022-01-24" "2022-01-17" "2022-01-10"
    #> [46] "2022-01-03" "2021-12-27" "2021-12-20" "2021-12-13" "2021-12-06"
    #> [51] "2021-11-29" "2021-11-22" "2021-11-15"
    

    创建于 2022-11-16 reprex v2.0.2

    【讨论】:

      【解决方案2】:

      使用seq.Date,回溯 3 周(21 天),从今天.

      today <- as.Date("2022-11-16")
      
      days <- seq.Date(today - 21, today, "day")
      
      days[format(days, "%A") == "Monday"]
      [1] "2022-10-31" "2022-11-07" "2022-11-14"
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-09-27
        • 2019-09-15
        • 2021-10-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多