hitode909の日記

趣味はマリンスポーツですの日記です

RubyとYAMLで時間を扱うとき

time: 10:20

として、Rubyでパースすると、10*60+20 = 620 になってしまう。これを10:20として扱う方法のメモ

Stringとして書く

time: "10:20"

と書くと、"10:20"というStringになるので,Time.parse()を使ってTimeオブジェクトにパースできる。
が、いちいち""で囲むのがめんどうなのでこれはやりたくない。

あとで戻す

time: 10:20

と書くとFixnumになるので,

class Fixnum
  def to_time
    return Time.parse("#{self/60}:#{self%60}")
  end
end

こんなかんじのを作っておくと、Timeにしたいところだけ個別にto_timeすれば、自然に扱うことが出来る。
時間的な扱いをしない場合は、return "#{self/60}:#{self%60}"してStringにするだけでも便利なはず。


個別にto_timeするのが気に入らないので、もっといい方法を探したい。