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

Ruby on rails 如何使用日期对象和带有日期名称的字符串来创建新的日期对象?,ruby-on-rails,ruby,date,Ruby On Rails,Ruby,Date,我有一个约会对象 Mon, 03 Dec 2012 我有一个字符串,其中包含一个日期名称 "Thursday" 如何使用这两个对象来查找与原始日期对象在同一周内表示日期名称的新日期对象?所以对于这个例子,它是 Thu, 07 Dec 2012 在这种情况下,一周从周一到周日 我使用的是Rails 3.2.0和Ruby 1.9.3。我相信有更好的方法可以做到这一点,但您可以做到 def date_by_day(date, day_name) beginning_of_week = dat

我有一个约会对象

Mon, 03 Dec 2012
我有一个字符串,其中包含一个日期名称

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

Thu, 07 Dec 2012
在这种情况下,一周从周一到周日


我使用的是Rails 3.2.0和Ruby 1.9.3。

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

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
  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

这个对你很合适

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

如果你能设法将“星期四”转换为第四周--我知道你能--你可以得到另一个类似这样的日期:

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。

如果您能够将“星期四”转换为第4周的第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