どうも、Rubyをやっているものです。突然ですがTimeクラスとDateクラスってよく分からなくありませんか?今回はそんな人のためにざっくりと概要をまとめておきたいと思います。
TimeクラスとDateクラス
ざっくりとした違いですが、Timeクラスは時刻を表現するためのクラスで、Dateクラスは年月日だけを扱うクラスです。
Timeクラス
Timeクラスで時刻を取得する
Time.newかTime.nowで現在の時刻を取得することができます。
Timeクラスでの時刻計算
Timeオブジェクト同士を比較したり、計算して差を求めたりできます。ちなみに出力結果は常に秒で換算されるので注意してください。
Ruby
t = Time.now
t2 = t + 60 * 60 * 24 #=>t2で24時間後の時刻を表示する
Dateクラス
Dateクラスで日付を取得する
最初にrequire “date”してから、Date.todayで今日の日付を取得できます。
Dateクラスでの日付計算
Dateオブジェクトもオブジェクト同士で差を求めたり、比較したりすることができます。ちなみに出力結果は、日を単位としています。
コード
d1 = Date.new(2015, 1, 1)
d2 = Date.new(2015, 1, 4)
puts d2 - d1 #=> 3/1r
MEMO
ちなみに出力結果はRationalオブジェクトになります。
TimeとDateの変換
to_timeメソッドとto_dateメソッドでそれぞれを変換可能です。ただしDateオブジェクトには時間の概念がないので、Dateオブジェクトを時刻に変換した場合は、0時0分0秒と表示されます。
コード
require "date"
t1 = Time.now
puts t1 #=> 2015-09-25 05:46:15 +0900
d = t1.to_date
puts d #=> 2015-09-25
t2 = d.to_time
puts t2 #=> 2015-09-25 00:00:00 +0900
時刻のフォーマット
時刻をあるフォーマットに従って文字れるとして出力したい場合は、t.strftimeを使います。ちなみに引数として渡せるフォーマットの形式はたくさんあるので、以下のサイトを参考にしてください。よく使うのは%Y、%d、%mなどです。