その月の最大日付を返すユーティリティ
例えば1月なら31、2月なら28を返すようなメソッドを探したがなかったので作ってみた。
require 'date' class DateUtil def DateUtil.actual_maximum(date) d = Date.new((date >> 1).year, (date >> 1).month, 1) (d - 1).day end end
クラスメソッドで呼ぶ。
date = Date.new(2007, 8, 11) puts DateUtil.actual_maximum(date) # => 31
やっていることは
・渡された月に1プラス(翌月にする)、かつ1日に設定
・そこから1日戻る(前月の最終日になる)
このあたり、Javaにいい関数が多いからなぁ。
そろそろJRubyの導入も検討したいところ。
※追記
トラックバックをいただきまして
d = Date.new(2007, 8, -1) puts d.day => 31
とのこと。
絶対にAPIがあるはずだと思ったら、やっぱりあったなぁ。
ありがとうございました。