RubyのTimeクラスとDateクラスの特徴とポイント

どうも、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などです。

参考 Time#strftimeRubyリファレンス

コメントを残す

メールアドレスが公開されることはありません。

CAPTCHA