【问题标题】:Ruby how can i get date of Monday after a given dateRuby如何在给定日期之后获取星期一的日期
【发布时间】:2014-07-09 12:42:18
【问题描述】:

给定一天,即星期一和日期,例如:2014 年 8 月 9 日,星期六

如何在给定日期之后立即获得星期一的日期

更新:

def get_date_after(date, day)
    return date if date.wday == day.to_date.wday
    days_difference = (date - day.to_date).to_i
    result = day.to_date + days_difference + (day.to_date.wday - date.wday)
    result = result + 1.week if result.to_date < date
end

我正在寻找类似上述方法的方法,调用它会返回 date 过去后立即过去的 day 日期

get_date_after(DateTime.parse("15/09/2014").to_date, "Wednesday") #=> 17/09/2014

【问题讨论】:

  • @Rahu1 我不需要下周一的日期,我要查找的是给定日期之后的周一日期
  • 这不是一个重复的问题,也不应该作为一个问题结束。但是,这是一个质量很差的问题,不包括任何研究工作或代码。您可以通过使用您尝试过的内容、为什么它不起作用以及为什么其他相关问题不能解决您的问题来更新您的问题。之后,标记重新打开。

标签: ruby-on-rails ruby date datetime


【解决方案1】:

chronic gem 允许您解析日期表达式,例如Chronic.parse("next Monday")。您可以使用now 选项添加参考日期。以下是它如何用于您的方法:

def get_date_after(date, day)
  Chronic.parse("next #{day}", now: date)
end

【讨论】:

    【解决方案2】:

    在 Rails 中你可以这样做 Date.today.next_week(day = :monday)

    【讨论】:

    • 如果今天是星期五,而下个星期六他要找错了。
    • 我希望在给定日期之后的星期一,比如如果我提供今天的日期方法应该返回 2014 年 7 月 14 日,即星期一的日期
    • 你可以使用这一行来测试 Chronic 的 RSpec 方法
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-12
    • 1970-01-01
    • 2011-09-27
    • 1970-01-01
    • 2017-07-19
    • 1970-01-01
    • 2011-03-02
    相关资源
    最近更新 更多