Rubyで今日の日付といった日付のデータを取得する方法について説明します。Rubyでは、DateクラスまたはDateTimeクラスを使い日付を取得します。
Dateクラスによる日付の取得
Rubyの標準ライブラリを読み込み、Dateクラスを使うことで日付オブジェクトを取得できます。今日の日付を取得するには、todayメソッドを使います。
1 2 3 4 5 |
require 'date' day = Date.today puts day #=> 2016-09-09 |
日付オブジェクトはyearメソッドやmonthメソッドを使うことで、以下のように年や月だけを取得することもできます。
1 2 |
puts day.year #=> 2016 |
特定の日付オブジェクトを取得する
また、特定の日の日付オブジェクトは、 Date.new(2000, 1, 1)のように、Dateクラスのインスタンスを作成することで取得できます。
さらに、日付オブジェクトのn日後(前)を取得するには、インスタンスメソッドの+、-メソッドを使う、同じくnヶ月後(前)を取得するには、>>、<<メソッドを使いいます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
require 'date' day = Date.new(2000, 1, 1) #1日後(+メソッド) puts day + 1 #=>2000-01-02 #1日前(-メソッド) puts day - 1 #=>1999-12-31 #1ヶ月後(>>メソッド) puts day >> 1 #=>2000-02-01 #1ヶ月前(<<メソッド) puts day << 1 #=>1999-12-01 |
DateTimeクラスによる日時の取得
Dateクラスでは日付しか扱えませんが、DateクラスのサブクラスであるDateTimeクラスは日付と時間の両方をまとめて扱うことができます。
基本的な書式は、Dateクラスとよく似ています。ただし、現在の日時を取得するには、todayメソッドではなくnowメソッドを使います。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
require 'date' #今日の日付 day = DateTime.now puts day #=>2016-09-10T16:55:23+09:00 #1993年2月24日12時30分45秒のインスタンスを作成 day = DateTime.new(1993, 2, 24, 12, 30, 45) #1日後 puts day + 1 #=>1993-02-25T12:30:45+00:00 #1日前 puts day - 1 #=>1993-02-23T12:30:45+00:00 #1ヶ月後 puts day >> 1 #=>1993-03-24T12:30:45+00:00 #1ヶ月前 puts day << 1 #=>1993-01-24T12:30:45+00:00 |