this_day = Date.today this_monday = this_day - (this_day.wday - 1) # 今週の月曜日 last_monday = (this_day - (this_day.wday - 1)) - 7 # 先週の月曜日ポイントは、wdayメソッドで日付を曜日分逆算すること。
Time#wdayメソッドの戻り値は、曜日を数値にした値です。
0(日曜日)〜6(土曜日)の値を返します。今週の任意の曜日の取得
this_sunday = this_day - (this_day.wday) # 今週の日曜日 this_monday = this_day - (this_day.wday - 1) # 今週の月曜日 this_tuesday = this_day - (this_day.wday - 2) # 今週の火曜日 this_wednesday = this_day - (this_day.wday - 3) # 今週の水曜日 ← 現在 this_thursday = this_day - (this_day.wday - 4) # 今週の木曜日 ↓ 未来 (未来日でも、”-"して取得する) this_friday = this_day - (this_day.wday - 5) # 今週の金曜日 this_saturday = this_day - (this_day.wday - 6) # 今週の土曜日先週の任意の曜日の取得
更にそこから - 7 すると先週の日付が求められる。
先週/今週の任意の曜日の日付を取得する (e.g.今週の月曜日、先週の月曜日を取得する) - bismar's blog
ということなので、Dateライブラリを使う。
ただしrequire 'date'が必要なことに注意。
上記例と異なるのは「先週の」ではなく「前の」金曜日であること。
つまり
- 今日が日月火水木金曜だったら先週の金曜日の日付
- 今日が土曜日だったらそのまま今週の金曜日の日付
を取得したい。
require 'date' this_day = Date.today this_friday = this_day - (this_day.wday - 5) # 今週の金曜日の日付 previous_friday = (this_friday >= this_day) ? this_friday - 7 : # 今日が日月火水木金曜だったら先週の金曜日の日付 this_friday # 今日が土曜日だったらそのまま今週の金曜日の日付
最終的にYYMMDD形式の日付が欲しかったのでDate#strftimeします。
previous_friday_yymmdd = previous_friday.strftime("%y%m%d") # => "130823"