我有一个日期对象
Mon, 03 Dec 2012
我有一个包含日期名称的字符串
"Thursday"
如何使用这两个对象找到一个新的 Date 对象,该对象表示与原始 Date 对象在同一周内的日期名称?所以对于这个例子,它将是
Thu, 07 Dec 2012
在这种情况下,一周从星期一到星期日。
我正在使用 Rails 3.2.0 和 Ruby 1.9.3。
我有一个日期对象
Mon, 03 Dec 2012
我有一个包含日期名称的字符串
"Thursday"
如何使用这两个对象找到一个新的 Date 对象,该对象表示与原始 Date 对象在同一周内的日期名称?所以对于这个例子,它将是
Thu, 07 Dec 2012
在这种情况下,一周从星期一到星期日。
我正在使用 Rails 3.2.0 和 Ruby 1.9.3。
如果你能设法将“星期四”转换为第 4 天——我知道你可以——你可以得到另一个这样的日期:
1.9.3p125 :014 > d = Date.parse "Mon, 03 Dec 2012"
=> Mon, 03 Dec 2012
1.9.3p125 :015 > Date.commercial d.cwyear, d.cweek, 4
=> Thu, 06 Dec 2012
1.9.3p125 :016 >
顺便说一句,您可以将地图从日期名称存储到数组或哈希中,或者使用 I18n。
我相信有更好的方法可以做到这一点,但你可以这样做
def date_by_day(date, day_name)
beginning_of_week = date.beginning_of_week
7.times do |i|
_date = beginning_of_week + i.days
return _date if _date.strftime("%A") == day_name
end
end
这个会很好地为你工作。
def date_by_day(date, day_name)
beginning_of_week = date.beginning_of_week
day_number = Time::DAYS_INTO_WEEK[day_name.to_sym]
return (beginnig_of_week + day_number.days)
end