d = Date.parse("2011/06/07")
d.tomorrow #=> 2011/06/08(明日)
d.yesterday #=> 2011/06/06(昨日)
d.beginning_of_month #=> 2011/06/01(月初)
d.end_of_month #=> 2011/06/30(月末)
d.months_ago(2) #=> 2011/04/07(2ヶ月前)
d.months_since(2) #=> 2011/08/07(2ヶ月後)
英文のように表現できますね。ところで、5月31日の1ヶ月前はいつになるのでしょうか。
d = Date.parse("2011/05/31")
d.months_ago(1) #=> 2011/04/30
月末とみるのでしょうか。じゃあ5月30日の1ヶ月前は?d = Date.parse("2011/05/30")
d.months_ago(1) #=> 2011/04/30
これには納得。しかし、5月31日と30日の1ヶ月前が同じになるということはバッチ処理とかで1ヶ月後に1回だけ行いたい場合には注意が必要ですね。days_sinceといったメソッドはないようですが、3日後はどうやって実装するのでしょうか。
d.since(3.day)sinceには秒で渡します。しかし、これだとDateTime型が返ってきます。Date型がほしい場合は、
d.since(3.day).to_dateとすればOKです。
ActiveSupportのドキュメントは下記です。
http://as.rubyonrails.org/
0 件のコメント:
コメントを投稿