日付オブジェクトで日付の加算や減算を行う
作成した Date クラスのオブジェクトに対して、日単位や月単位で加算や減算を行うことができます。ここでは Ruby で日付オブジェクトに対して日付の加算や減算を行う方法について解説します。
(Last modified: )
日単位で加算と減算を行う
最初に Date
クラスのオブジェクトに対して日単位で加算や減算を行う方法です。 Date
クラスで用意されているインスタンスメソッドの +
または -
メソッドを使用します。
require "date" d = Date.today afterDay = d + 1 beforeDay = d - 5
上記の場合、現在の日付から Date
クラスのオブジェクトを作成し、そのあとで 1 日後の日付を表す Date
クラスのオブジェクトと 5 日前の日付を表す Date
クラスのオブジェクトを取得しています。
月単位で加算と減算を行う
次に Date
クラスのオブジェクトに対して月単位で加算や減算を行う方法です。 Date
クラスで用意されているインスタンスメソッドの <<
または >>
メソッドを使用します。
require "date" d = Date.today beforeMonth = d << 1 afterMonth = d >> 5
上記の場合、現在の日付から Date
クラスのオブジェクトを作成し、そのあとで 1 ヵ月後の日付を表す Date
クラスのオブジェクトと 3 ヵ月前の日付を表す Date
クラスのオブジェクトを取得しています。
なお例えば 3 月 31 日から 1 ヵ月後の日付オブジェクトを取得すると 4 月 31 日になりますが、 4 月には 31 日は存在しません。このように存在しない日付になった場合はその月の最終日である 4 月 30 日の日付オブジェクトが取得されます。
2つの日付の差分を取得する
Date
クラスの -
メソッドは日付と日付の差分を取得する場合にも使用できます。次の例を見て下さい。
require "date" d1 = Date.new(2022, 3, 14) d2 = Date.new(2022, 6, 8) puts(d2 - d1)
Date
クラスのオブジェクトに対して -
メソッドを使って別の Date
クラスのオブジェクトを減算すると、 2 つの日付オブジェクトの差を日単位の数値で取得することができます。上記の場合は 2 つの日付の差として 86 が表示されます。
では簡単なサンプルで試してみます。
# encoding: UTF-8 require "date" d1 = Date.today d2 = Date.new(2022, 1,1) puts("本日の日付:" + d1.to_s) puts("3日後の日付:" + (d1 + 3).to_s) puts("5日前の日付:" + (d1 - 5).to_s) puts("2ヶ月後の日付:" + (d1 >> 2).to_s) puts("6ヶ月前の日付:" + (d1 >> 6).to_s) puts("本日と2022/01/01との差は" + (d1 - d2).to_s + "日")
実行結果は次のようになります。
-- --
Ruby で日付オブジェクトに対して日付の加算や減算を行う方法について解説しました。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。