カテゴリー
未分類

Rubyで第NのX曜日を取得する

Rubyで第4日曜日の取得を行うといった処理をどう記述するか。方法は色々とあると思うが、曜日ごとのハッシュに順に日を格納して取り出すという地道な方法で書いてみた。

require "Date"
require "Time"
year = 2014
month = 9
weeks = {0 => [], 1 => [], 2 => [], 3 => [], 4 => [], 5 => [], 6 => []}
last_day = Date.new(year, month , -1).mday
last_day.times do |d|
date = Time.parse("#{year}-#{month}-#{d+1}")
weeks[date.wday.to_i] << d + 1
end
p weeks
# {
#   "0"=>[7, 14, 21, 28],
#   "1"=>[1, 8, 15, 22, 29],
#   "2"=>[2, 9, 16, 23, 30],
#   "3"=>[3, 10, 17, 24],
#   "4"=>[4, 11, 18, 25],
#   "5"=>[5, 12, 19, 26],
#   "6"=>[6, 13, 20, 27]
# }
# 第4日曜日
puts weeks[0][3] unless weeks[0][3].nil?
# 第2水曜日
puts weeks[3][1] unless weeks[3][1].nil?
# 第1土曜日
puts weeks[6][0] unless weeks[6][0].nil?

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA