该线程提供了查找今天日期之后的第一天(例如星期四)的答案。
我想获得一个更通用的函数,它在任何给定日期(例如 2017 年 11 月 1 日)之后给出一天(例如星期四)的第一次出现。
因此,该方法将采用 2 个参数:日期(作为字符串或日期对象)和日期(作为字符串)。
我发现的一种方法是每天使用该thursday?
方法(例如my_date_object.thursday?
)进行检查,但您需要一个 switch / if-else 语句来检查要检查哪一天,这使得该方法相当庞大,如下所示。
def get_next_day_after_date(date, day)
days_in_week = 7
week = []
days_in_week.times { |day_after| week << (date + day_after) }
if day.casecmp('Monday').zero?
week.select(&:monday?)
elsif day.casecmp('Tuesday').zero?
week.select(&:tuesday?)
elsif day.casecmp('Wednesday').zero?
week.select(&:wednesday?)
# same code for Thursday to Sunday
end
end
在纯 Ruby 中是否有更简洁的方法来实现这一目标?(不使用active_support
或特定于rails 的方法)。
require "date"
def get_next_day_after_day(date, day)
date + (Date.strptime(day, "%A") - date) % 7
end
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句