Rubyで日時の様々な情報を取得する:Time

今回はRubyで時刻の情報を取得する方法について紹介します。Rubyで日付や時刻の情報を取り扱う場合は、組み込みクラスであるTime クラスを使用します。

Timeクラス

Timeクラスは時刻を取り扱うクラスでオペレーティングシステムの時刻を取得します。システム依存なので、実行する環境によって取得できる時刻が異なるので注意してください。

現在の日時を取得する

現在の時刻を取得する場合は、Time.now または Time.newを使用します。

Time.now # 2016-06-21 20:06:29 +0900
Time.new # 2016-06-21 20:06:29 +0900

Time.nowを使用した場合は、日付、時刻、タイムゾーンが取得できます。そのまま出力した場合は、日本時間(JST)の場合は最後に +0900 と表示されます。

年・月・日・時・分・秒・タイムゾーンを取得する

Timeクラスには日時の情報を取得する様々なメソッドが用意されています。

now = Time.now # 2016-6-21 20:17:42 +0900
puts now.year  # 年:2016
puts now.month # 月:6 
puts now.day   # 日:21
puts now.hour  # 時:20
puts now.min   # 分:17
puts now.sec   # 秒:42
puts now.nsec  # ナノ秒:221255000
puts now.zone  # タイムゾーン:JST

曜日を取得する

曜日を取得するには Time.wday を使用します。
Time.wday は 0(日曜日)〜6(土曜日) の数値を返します。

now = Time.now # 2016-6-21 20:17:42 +0900
puts now.wday # 2

上の例では 2 が表示されるので、火曜日であることがわかります。また、以下のようにしてTimeオブジェクトの曜日の判定も行うことができます。

now = Time.now # 2016-6-21 20:17:42 +0900

puts now.sunday?    # false
puts now.monday?    # false
puts now.tuesday?   # true
puts now.wednesday? # false
puts now.thursday?  # false
puts now.friday?    # false
puts now.saturday?  # false

1月1日からの経過日数を取得する

Time.yday を使うことで、1月1日からどのくらいの日数が経過しているのかを取得することができます。

now = Time.now # 2016-6-21 20:17:42 +0900
puts now.yday # 173