今回はRubyで時刻の情報を取得する方法について紹介します。Rubyで日付や時刻の情報を取り扱う場合は、組み込みクラスであるTime クラスを使用します。
Timeクラス
Timeクラスは時刻を取り扱うクラスでオペレーティングシステムの時刻を取得します。システム依存なので、実行する環境によって取得できる時刻が異なるので注意してください。
現在の日時を取得する
現在の時刻を取得する場合は、Time.now または Time.newを使用します。
1 2 |
Time.now # 2016-06-21 20:06:29 +0900 Time.new # 2016-06-21 20:06:29 +0900 |
Time.nowを使用した場合は、日付、時刻、タイムゾーンが取得できます。そのまま出力した場合は、日本時間(JST)の場合は最後に +0900 と表示されます。
年・月・日・時・分・秒・タイムゾーンを取得する
Timeクラスには日時の情報を取得する様々なメソッドが用意されています。
1 2 3 4 5 6 7 8 9 |
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(土曜日) の数値を返します。
1 2 |
now = Time.now # 2016-6-21 20:17:42 +0900 puts now.wday # 2 |
上の例では 2 が表示されるので、火曜日であることがわかります。また、以下のようにしてTimeオブジェクトの曜日の判定も行うことができます。
1 2 3 4 5 6 7 8 9 |
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日からどのくらいの日数が経過しているのかを取得することができます。
1 2 |
now = Time.now # 2016-6-21 20:17:42 +0900 puts now.yday # 173 |