给定一天,即星期一和日期,例如: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
chronic
gem 允许您解析日期表达式,例如Chronic.parse("next Monday")
。您可以使用 now
选项添加参考日期。以下是它如何用于您的方法:
def get_date_after(date, day)
Chronic.parse("next #{day}", now: date)
end
在 Rails 中你可以这样做
Date.today.next_week(day = :monday)
如果您有 Rails ActiveSupport 可用,则
DateAndTime::Calculations
模块中提供了多种方法可以帮助解决此类问题。在这种情况下,我认为 next_occurring
可能就是所需要的:
Date.parse("15/09/2014").next_occurring(:wednesday) #=> Wed, 17 Sep 2014