stMind

about Arsenal, Arsene Wenger, Tech, Computer vision and Machine learning

rubyで日付の比較

昨日の課題をrubyで実装してみました。
日付の計算には、active_supportを使います。

Rubyで日付の計算するならactive_support使っとけ - (゚∀゚)o彡 sasata299's blog

一つ注意するのは、

require 'active_support'

ではなく、

require 'active_support/all'

とすること。
activesupport3になって、active_support、active_support/time、active_support/core_extに
分けられて個別に読み込むようになったため、active_supportだけではNoMethodErrorになるようです。
この辺りは、以下のブログに詳しく書かれています。

activesupport 3のblank?メソッドを使用するにはrequire 'active_support/core_ext'としないとNoMethodErrorになるので注意 - memo.yomukaku.net

実装は以下のようになりました。

#!/usr/bin/env ruby

require 'rubygems'
require 'active_support/all'

if __FILE__ == $0
  ms = ['201201', '201202', '201203', '201204', '201205', '201206',
        '201207', '201208', '201209', '201210', '201211', '201212']

  today = Time.new

  ms.each {|m|
    if today - 6.month > Time.strptime(m, '%Y%m')
      printf "old: %s\n", m
    else
      printf "new: %s\n", m
    end
  }

end

active_support/allを使うことで、とても直感的で簡単に比較が出来ますね。