【问题标题】:How to get the date of "this Wednesday", "this Thursday" etc. in Rails如何在 Rails 中获取“本周三”、“本周四”等日期
【发布时间】:2020-01-24 08:37:42
【问题描述】:

我知道 Rails 有一种优雅的方式来获取下周或上周的某一天的日期 (docs)。

today = Time.zone.today
=> Fri, 24 Jan 2020

today.next_week
=> Mon, 27 Jan 2020 # Gets Monday by default

today.next_week(:thursday)
=> Thu, 30 Jan 2020 # You can get a certain day of the week by passing it in as an argument

这周有没有办法做同样的事情?例如,获取本周四、周五等的日期?现在,我的解决方法是获取beginning_of_week(星期一)的日期并从那里计算。理想情况下,我想做类似上面的事情,比如Time.zone.today.this_week(:thursday)

this_monday = Time.zone.today.beginning_of_week
=> Mon, 20 Jan 2020

this_friday = this_monday.since(4.days).to_date
=> Fri, 24 Jan 2020

【问题讨论】:

    标签: ruby-on-rails ruby datetime


    【解决方案1】:

    你可以使用#next_occurring

    pry(main)> Time.zone.today.beginning_of_week
    Mon, 20 Jan 2020
    pry(main)> Time.zone.today.beginning_of_week.next_occurring(:thursday)
    Thu, 23 Jan 2020
    

    【讨论】:

    • 谢谢。 .next_occurring.since(4.days) 更容易阅读(虽然仍然很冗长)。
    • 还有Time.zone.today.beginning_of_week(:thursday),但从文档中我不清楚这是否真的能达到你想要达到的效果,感觉更像是一个黑客。就个人而言,我不会在生产代码中使用它,所以我没有将它包含在我的答案中。
    • 如果这是正确答案,请标记为正确答案。
    • 这对我也有用Time.parse('10:30:00').in_time_zone('Europe/London').next_occurring(:thursday)
    猜你喜欢
    • 1970-01-01
    • 2022-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-14
    • 1970-01-01
    • 1970-01-01
    • 2021-01-29
    相关资源
    最近更新 更多