【问题标题】:how get the last week start date and end date based on date in current week ruby如何根据当前周红宝石中的日期获取上周的开始日期和结束日期
【发布时间】:2021-05-04 13:20:33
【问题描述】:

如何根据当前周 ruby​​(周一 - 周日)中的日期获取上周的开始日期和结束日期

例如:如果日期是 04-feb-15,那么结果应该是 start_date = Monday(26-jan-1015) end_date = Sunday(1-feb-15)

如果日期是 27-feb-15, ,那么结果应该是 start_date = Monday(16-feb-1015) end_date = (22-feb-15)

【问题讨论】:

标签: ruby


【解决方案1】:

你可以试试这个方法:

require 'date'
=> true

date = Date.today
=> #<Date: 2015-02-04 ((2457058j,0s,0n),+0s,2299161j)>

# date.wday return week day
end_date = date-date.wday
=> #<Date: 2015-02-01 ((2457055j,0s,0n),+0s,2299161j)>

start_date = date-date.wday-6
=> #<Date: 2015-01-26 ((2457049j,0s,0n),+0s,2299161j)>

更多操作可以参考这个链接Ruby Doc.

【讨论】:

    【解决方案2】:
    • 上周的第一个日期

       Date.today.last_week.beginning_of_week
      
    • 上周的最后一天

       Date.today.last_week.at_end_of_week
      

    【讨论】:

      【解决方案3】:

      你可以试试这个方法

      require 'active_support/core_ext/date/calculations'
      
      monday = (Date.today.beginning_of_week.last_week)
      
      sunday = (Date.today.beginning_of_week.last_week + 6)
      

      有关 ActiveSupport 日期扩展的更多详细信息:https://edgeguides.rubyonrails.org/active_support_core_extensions.html#extensions-to-date

      【讨论】:

        【解决方案4】:

        使用 Date#wday 来表示星期几是给定的日期,然后相应地减去:

        require 'date'
        
        date = Date.parse("15-02-04")
        monday = date - (date.wday + 6) # 2015-01-26
        sunday = date - date.wday # 2015-02-01
        
        date = Date.parse("15-02-27")
        monday = date - (date.wday + 6) # 2015-02-16
        sunday = date - date.wday # 2015-02-22
        

        【讨论】:

          【解决方案5】:

          我试过下面的代码,工作正常。

          monday = (Date.today.beginning_of_week - 7) # 2015-01-26
          sunday = (Date.today.end_of_week - 7) # 2015-02-01
          

          【讨论】:

          • beginning_of_week 在irb 中不起作用。它将与 rails 主动支持一起使用
          猜你喜欢
          • 1970-01-01
          • 2010-11-19
          • 1970-01-01
          • 2012-07-25
          • 2015-04-09
          • 1970-01-01
          • 2014-05-18
          • 1970-01-01
          相关资源
          最近更新 更多