如何使用Date对象和带有日期名称的字符串来创建新的Date对象?

时间:2012-11-21 08:35:24

标签: ruby-on-rails ruby date

我有一个Date对象

Mon, 03 Dec 2012

我有一个包含日期名称的字符串

"Thursday"

如何使用这两个对象来查找与原始Date对象在同一周内表示日期名称的新Date对象?所以对于这个例子,它将是

Thu, 07 Dec 2012

在这种情况下,一周从星期一到星期日。

我正在使用Rails 3.2.0和Ruby 1.9.3。

3 个答案:

答案 0 :(得分: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。

答案 1 :(得分:0)

我确信有更好的方法可以做到这一点,但你可以做到

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

答案 2 :(得分:0)

这个适合你。

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