Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

Rubyで次の月や月末の曜日を調べたいときはactive_supportにお願いしてみよう

Railsなどで良く見かけるActiveSupportさんは実はスゴイ子です。
これをつかうと、日付まわりで相当楽ができます。

require 'active_support/core_ext/date'

してあげれば導入可能です

月末・月初まわり

2014年8月初日の曜日を調べるのもこの通り。

Date.today.at_beginning_of_month.strftime("%A")
=> "Friday"

N月1日を調べるいつぞやの記事も、かなり見通しよく書く事ができます
毎回Dateクラスのインスタンス生成だとか、
next_monthで足し算したりだとかはしなくともよいのです

date = Date.new(2014,1,1)
(1..12).each {|i| p date.change(month: i).strftime("%m/%d Week#%2V %A") }

#>> "01/01 Week#01 Wednesday"
#>> "02/01 Week#05 Saturday"
#>> "03/01 Week#09 Saturday"
#>> "04/01 Week#14 Tuesday"
#>> "05/01 Week#18 Thursday"
#>> "06/01 Week#22 Sunday"
#>> "07/01 Week#27 Tuesday"
#>> "08/01 Week#31 Friday"
#>> "09/01 Week#36 Monday"
#>> "10/01 Week#40 Wednesday"
#>> "11/01 Week#44 Saturday"
#>> "12/01 Week#49 Monday"

四半期まわり

四半期前を調べる事も...できちゃいます。

Date.today.prev_quarter.jisx0301
=> "H26.05.10"

四半期始まりも分かります。そう、active_supportならね

Date.today.beginning_of_quarter.jisx0301
=> "H26.07.01"

まとめ

ご覧頂いたように、日付まわりだけでも便利メソッドが山盛りあります。
たしかに標準ライブラリではありませんが、
自分でやるよかナンボも美しく早い実装なのは間違いありません。
あるもんは使いましょう