Ruby on rails 最近发生在星期三?

Ruby on rails 最近发生在星期三?,ruby-on-rails,ruby,date,Ruby On Rails,Ruby,Date,如何使用Ruby(和Rails,如果有相关的助手方法的话)获取最近发生的星期三 最终需要实际日期(2013年5月1日)。非常简单: 您甚至可以选择这样的最后一个工作日(此处无错误处理): 这在Ruby中起作用: require 'date' def last_wednesday(date) date - (date.wday - 3) % 7 end last_wednesday(Date.today) # => #<Date: 2013-05-01 ((2456414j,0

如何使用Ruby(和Rails,如果有相关的助手方法的话)获取最近发生的星期三


最终需要实际日期(2013年5月1日)。

非常简单:

您甚至可以选择这样的最后一个工作日(此处无错误处理):

这在Ruby中起作用:

require 'date'

def last_wednesday(date)
  date - (date.wday - 3) % 7
end

last_wednesday(Date.today)
# => #<Date: 2013-05-01 ((2456414j,0s,0n),+0s,2299161j)>

如果你可以使用另一个宝石,我推荐

有了它,您可以通过执行以下操作获得上周三:

Chronic.parse('last Wednesday')
(对我来说)最简单的方法是:


这是太棒了
每周开始
是解决这个问题的一个非常有趣/简洁的方法。好主意!
def last_weekday(weekday)
  today = Time.now.to_date
  today.downto(today-6).select do |d|
    d.send((weekday.to_s + "?").to_sym)
  end
end
require 'date'

def last_wednesday(date)
  date - (date.wday - 3) % 7
end

last_wednesday(Date.today)
# => #<Date: 2013-05-01 ((2456414j,0s,0n),+0s,2299161j)>
Date.today.beginning_of_week(:wednesday)
# => Wed, 01 May 2013
Chronic.parse('last Wednesday')
require 'date'
date = Date.today
date -= 1 until date.wednesday?