Ruby 如何获取给定日期之后的星期一日期

问题描述 投票:0回答:3

给定一天,即星期一和日期,例如: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
ruby-on-rails ruby date datetime
3个回答
4
投票

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

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

1
投票

在 Rails 中你可以这样做

Date.today.next_week(day = :monday)


0
投票

如果您有 Rails ActiveSupport 可用,则

DateAndTime::Calculations
模块中提供了多种方法可以帮助解决此类问题。在这种情况下,我认为
next_occurring
可能就是所需要的:

Date.parse("15/09/2014").next_occurring(:wednesday) #=> Wed, 17 Sep 2014
© www.soinside.com 2019 - 2024. All rights reserved.