- Home ›
- Ruby入門 ›
- 時刻(Time)クラス
指定の日時のTimeオブジェクトを作成する
Time クラスのオブジェクトは現在時刻だけではなく指定した日時を表す Time オブジェクトを作成できます。ここでは Ruby で指定した日時の Time オブジェクトを作成する方法について解説します。
(Last modified: )
指定の日時のTimeオブジェクトを作成する
指定の日時の Time
クラスのオブジェクトを作成する方法です。 Time
クラスで用意されている local
メソッドを使います。
Time.local(year, mon = 1, day = 1, hour = 0, min = 0, sec = 0, usec = 0)
local
メソッドを使った場合はローカルタイムの Time
クラスのオブジェクトを作成します。
例えば年だけを 2022 年に指定した場合は、他の値は次の通りに設定されます。
Time.local(2022) 月 : 1 日 : 1 曜日: 1 (曜日は月と日の値から計算される) 時 : 0 分 : 0 秒 : 0
値を指定する場合は次のルールに従って指定してください。
year: 年を整数か文字列で指定します。2022年なら 2022。 mon: 1(1月)から 12(12月)の範囲の整数または文字列で指定します。 day: 日を 1 から 31 までの整数か文字列で指定します。 hour: 時を 0 から 23 までの整数か文字列で指定します。 min: 分を 0 から 59 までの整数か文字列で指定します。 sec: 秒を 0 から 60 までの整数か文字列で指定します。(60はうるう秒) usec: マイクロ秒を整数か文字列で指定します。
同じ Time
クラスで用意されている local
メソッドですが、引数が異なるものが用意されています。
local(sec, min, hour, mday, mon, year, wday, yday, isdst, zone)
こちらのメソッドを使用する場合は 10 個の引数をすべて指定する必要があります。ただし wday, yday, zone の 3 つの引数は指定しても無視されます。この形式の引数の順序は Time
クラスの to_a
メソッドを使って Time
オブジェクトの値を配列として取得する場合の並びと同じです。
local
メソッドと同じことをするメソッドとして Time
クラスには mktime
メソッドが用意されています。
Time.mktime(year[, mon[, day[, hour[, min[, sec[, usec]]]]]]) Time.mktime(sec, min, hour, mday, mon, year, wday, yday, isdst, zone)
またローカルタイムでは無く、協定世界時の Time
クラスのオブジェクトを取得するには Time
クラスで gm
メソッド又は utc
メソッドを使用してください。
Time.gm(year[, mon[, day[, hour[, min[, sec[, usec]]]]]]) Time.gm(sec, min, hour, mday, mon, year, wday, yday, isdst, zone) Time.utc(year[, mon[, day[, hour[, min[, sec[, usec]]]]]]) Time.utc(sec, min, hour, mday, mon, year, wday, yday, isdst, zone)
引数の指定の仕方については local
メソッドと同じです。
では簡単なサンプルで試してみます。
# encoding: UTF-8 youbi = %w[日 月 火 水 木 金 土] t = Time.local(2022) puts(t) print(t.year, "年", t.month, "月", t.day, "日") print("(", youbi[t.wday], ") ") print(t.hour, "時", t.min, "分", t.sec, "秒\n") print("TimeZone:", t.zone, "\n") puts() t = Time.gm(2022) puts(t) print(t.year, "年", t.month, "月", t.day, "日") print("(", youbi[t.wday], ") ") print(t.hour, "時", t.min, "分", t.sec, "秒\n") print("TimeZone:", t.zone, "\n") puts() t = Time.local(2022,10,26,13,45,29) puts(t) print(t.year, "年", t.month, "月", t.day, "日") print("(", youbi[t.wday], ") ") print(t.hour, "時", t.min, "分", t.sec, "秒\n") print("TimeZone:", t.zone, "\n")
実行結果は次のようになります。
-- --
Ruby で指定した日時の Time オブジェクトを作成する方法について解説しました。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。