blog.waterlow.work

Ruby, Rails, js, etc...

【Ruby】Gold試験対策-ライブラリ-日付・日時

問題で出てきた以下のソース。

require "date"
d1 = DateTime.now
d2 = DateTime.now
p (d2 - d1).class #=> Rational
# 小さな分数が出る。 

Date、DateTimeクラスは日付までを整数で、それ以下は分数で保持している。そのため計算すると分数が出力される。

また便利なメソッドも多数。

require "date"
d1 = Date.parse("11-01-11", true)
d2 = Date.parse("11-02-01", true)
d1.step(d2, 7) do |date|
  p date.strftime("%Y-%m-%d")
end
# "2011-01-11"
# "2011-01-18"
# "2011-01-25"
# "2011-02-01"

parseは第2引数でtrueを指定すると近い年次(1969-2068)に変換してくれる。またstrftimeは%記法でフォーマット変換してくれます。%記法はすべて覚えるのにはそこそこ労力がかかるので、とりあえずymdだけ覚えておけばいいかなと思います!