5

Ruby (および適切なヘルパー メソッドがある場合は Rails) を使用して、最近発生した水曜日を取得するにはどうすればよいですか?

最終的には実際の日付 (2013 年 5 月 1 日) が必要です。

4

5 に答える 5

8
time = Time.now
days_to_go_back = (time.wday + 4) % 7
last_wed = days_to_go_back.days.ago
于 2013-05-06T21:07:22.100 に答える
6

これは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)>

Railsには次のものがありbeginning_of_weekます:

Date.today.beginning_of_week(:wednesday)
# => Wed, 01 May 2013
于 2013-05-06T21:22:23.607 に答える
2

別の gem を使用しても問題ない場合は、Chronicをお勧めします。

それを使用すると、次のようにして先週の水曜日を取得できます。

Chronic.parse('last Wednesday')
于 2013-05-06T21:23:28.733 に答える
2

(私にとって)最も簡単な方法は次のとおりです。

require 'date'
date = Date.today
date -= 1 until date.wednesday?
于 2013-05-06T23:20:30.167 に答える
0

かなり簡単Dateです:

require 'date'
today = DateTime.now.to_date
last_wednesday = today.downto(today - 6).select { |d| d.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
于 2013-05-06T21:16:45.877 に答える