【问题标题】:Get previous week between only this current month in Ruby在 Ruby 中仅在当前月份之间获取前一周
【发布时间】:2021-07-09 12:45:19
【问题描述】:

我在下面的代码中得到了上周的第一个日期和 7 月的最后一个日期,但我得到了 6 月 28 日作为上周的第一个日期。我想从 7 月 1 日到 7 月 2 日开始一周。我不会回到上个月。

每个工作日范围是周一到周五。

(Date.today - Date.today.wday - 6).strftime('%d %b') => "28 Jun" 
(Date.today - Date.today.wday - 2).strftime('%d %b') => "02 Jul"

对此有什么建议吗?感谢所有帮助。

【问题讨论】:

  • 这是你想要的吗,DateTime.now.beginning_of_month?我不明白你在问什么。
  • 这里,apidock.com/rails/ActiveSupport/CoreExtensions/Date/…,还有其他有用的方法,beginning_of_week等,说不定你发现了什么……
  • 我的工作日范围是周一到周五。 "at_beginning_of_week" 和 "at_end_of_week" 分别是一周的开始(星期一)和一周的结束(星期日),但这个日期范围应该是 7 月 1 日到 7 月 30 日。在我的代码上方,我们可以获得当前日期的前一周。如果我们在 Rails 控制台中检查,我们会得到“7 月 28 日”到“7 月 2 日”的周范围。我们根据周一到周五的范围得到这个原因。问题是,我不想得到 6 月 28 日、29 日、30 日。星期四(7 月 1 日)到星期五(7 月 2 日)可以是本月的一周。 @razvans

标签: ruby date datetime


【解决方案1】:

我不确定是否有一个单行来解决这个问题。但这是我对解决上述逻辑的看法

def previous_week_in_current_month(selected_date)
  previous_week_date = selected_date - 1.week
  (previous_week_date.month == selected_date.month) ? previous_week_date : selected_date
end

previous_week_in_current_month 返回当前月份 current_date 的前一周,如果提供的日期是从第一周开始,则返回当前日期。也许如果你愿意,你可以让它返回 nil。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-09
    • 2021-12-01
    • 2018-02-20
    相关资源
    最近更新 更多