【Ruby on Rails】月の最初の日、最終日はどうやって取得する?
画面から入力された日付の月が何日までなのか取得する方法が分からなかったので調べてみました。
月の最終日
irb> Date NameError: uninitialized constant Date Did you mean? Data from (irb):9 from /Users/taku/.rbenv/versions/2.3.3/bin/irb:11:in `<main>' irb> require "date" => true irb> date = Date.today => #<Date: 2017-12-13 ((2458101j,0s,0n),+0s,2299161j)> irb> date.end_of_month NoMethodError: undefined method `end_of_month' for #<Date: 2017-12-13 ((2458101j,0s,0n),+0s,2299161j)> from (irb):13 from /Users/taku/.rbenv/versions/2.3.3/bin/irb:11:in `<main>'
むむむ何でだ。
end_of_month
というメソッドを使うと月の最終日が取れる。取れたんだけど...
調べてみると、end_of_month
はRailsで定義されたメソッドみたい。
なのでrails c
で検証スタート。
> rails c > date = Date.today => Wed, 13 Dec 2017 > date.end_of_month => Sun, 31 Dec 2017 > date.end_of_month.to_s => "2017-12-31"
月の最初の日
月の最初の日を求める時はbeginning_of_month
を使う
> date = Date.today => Wed, 13 Dec 2017 > date.beginning_of_month => Fri, 01 Dec 2017 > date.beginning_of_month.to_s => "2017-12-01"
その他のちょっとしたあれこれ
> Date.today.year => 2017 > Date.today.month => 12 > Date.today.day => 13 > Date.today.wday => 3 # 「0」が日曜日なので「3」は水曜日