Ruby 1.8.7 リファレンスマニュアル > ライブラリ一覧 > 組み込みライブラリ > Timeクラス
クラスの継承リスト: Time < Comparable < Object < Kernel
時刻を表すクラスです。
Time.now は現在の時刻を返します。 File.mtime などが返すファイルのタイムスタンプは Time オブジェクトです。
Time オブジェクトは時刻を起算時からの経過秒数で保持しています。 起算時は協定世界時(UTC、もしくはその旧称から GMT とも表記されます) の 1970年1月1日午前0時です。なお、うるう秒を勘定するかどうかはシステムに よります。
現在の Unix システムでの最大時刻は、 協定世界時の2038年1月19日午前3時14分7秒 です。
Time オブジェクトが格納可能な時刻の範囲は環境によって異なります。 範囲の下限としては、上記起算時からの経過秒数として 0 および正数しか 受け付けない環境もあれば、負数も受け付ける環境もあります。 また、範囲の上限としては、上記の Unix システムでの最大時刻を越えて 64bit 値の範囲の経過秒数を受け付ける環境もあります。 さらに、他に特定の時点を越える時刻の値を受け付けない環境もあります。 Time オブジェクトを生成する各メソッドで、それぞれの環境での範囲外の 時刻を格納しようとした場合は例外が発生します。
また、Time オブジェクトは協定世界時と地方時のどちらのタイムゾー ンを使用するかのフラグを内部に保持しています。 ただし、この情報は Marshal.#dump では保存されず、Marshal.#load で読み込んだ Time オブジェクトのタイムゾーンは常に地方時になりま す。
p Marshal.load(Marshal.dump(Time.now.gmtime)).zone # => "JST"
time ライブラリによって、Time.parse, Time.rfc2822, Time.httpdate, Time.iso8601 等が拡張されます。
localtime(3) も参照しください。
C 言語の tm 構造体とは異なり、month は 1 月に対 して 1 を返し、year は 1998 年に対して 1998 を返します。また、 yday は 1 から数えます。
at(time) -> Time
[permalink][rdoc]time で指定した時刻の Time オブジェクトを返します。
引数が数値の場合、生成された Time オブジェクトのタイムゾーンは地方時となります。
at(time, usec) -> Time
[permalink][rdoc]time + (usec/1000000) の時刻を表す Time オブジェクトを返します。 浮動小数点の精度では不十分な場合に使用します。
生成された Time オブジェクトのタイムゾーンは地方時となります。
gm(year, mon = 1, day = 1, hour = 0, min = 0, sec = 0, usec = 0) -> Time
[permalink][rdoc]utc(year, mon = 1, day = 1, hour = 0, min = 0, sec = 0, usec = 0) -> Time
引数で指定した協定世界時の Time オブジェクトを返します。
第2引数以降に nil を指定した場合の値はその引数がとり得る最小の値です。
p Time.gm(2000, 1, 1) #=> Sat Jan 01 00:00:00 UTC 2000
gm(sec, min, hour, mday, mon, year, wday, yday, isdst, zone) -> Time
[permalink][rdoc]utc(sec, min, hour, mday, mon, year, wday, yday, isdst, zone) -> Time
引数で指定した協定世界時の Time オブジェクトを返します。
引数の順序は Time#to_a と全く同じです。 引数 wday, yday, zone に指定した値は無視されます。 引数に nil を指定した場合の値はその引数がとり得る最小の値です。
local(year, mon = 1, day = 1, hour = 0, min = 0, sec = 0, usec = 0) -> Time
[permalink][rdoc]mktime(year, mon = 1, day = 1, hour = 0, min = 0, sec = 0, usec = 0) -> Time
引数で指定した地方時の Time オブジェクトを返します。
第2引数以降に nil を指定した場合の値はその引数がとり得る最小の値です。
p Time.local(2000, 1, 1) #=> Sat Jan 01 00:00:00 +0900 2000
local(sec, min, hour, mday, mon, year, wday, yday, isdst, zone) -> Time
[permalink][rdoc]mktime(sec, min, hour, mday, mon, year, wday, yday, isdst, zone) -> Time
引数で指定した地方時の Time オブジェクトを返します。
引数の順序は Time#to_a と全く同じです。 引数 wday, yday, zone に指定した値は無視されます。 引数に nil を指定した場合の値はその引数がとり得る最小の値です。
new -> Time
[permalink][rdoc]now -> Time
現在時刻の Time オブジェクトを生成して返します。 タイムゾーンは地方時となります。
times -> Struct::Tms
[permalink][rdoc]このメソッドは obsolete です。
自身のプロセスとその子プロセスが消費したユーザ/システム CPU 時間の積算を Struct::Tms のオブジェクトとして返します。 Struct::Tms は以下のメンバを持つ構造体クラスです。
時間の単位は秒で、浮動小数点数で与えられます。詳細は times(3) を参照してください。
このメソッドは Process.#times に移動しました。Time.times も使えます が、警告メッセージが出力されます。
self + other -> Time
[permalink][rdoc]self より other 秒だけ後の時刻を返します。
t = Time.now #=> Wed Apr 09 08:56:03 CDT 2003 t + (60 * 60 * 24) #=> Thu Apr 10 08:56:03 CDT 2003
self - time -> Float
[permalink][rdoc]自身と time との時刻の差を Float で返します。単位は秒です。
t = Time.now #=> Wed Apr 09 08:56:03 CDT 2003 t2 = t + 2592000 #=> Fri May 09 08:56:03 CDT 2003 t2 - t #=> 2592000.0
self - sec -> Time
[permalink][rdoc]自身より sec 秒だけ前の時刻を返します。
t = Time.now #=> Wed Apr 09 08:56:03 CDT 2003 t2 = t + 2592000 #=> Fri May 09 08:56:03 CDT 2003 t2 - 2592000 #=> Wed Apr 09 08:56:03 CDT 2003
self <=> other -> -1 | 0 | 1 | nil
[permalink][rdoc]self と other の時刻を比較します。self の方が大きい場合は 1 を、等しい場合は 0 を、 小さい場合は -1 を返します。比較できない場合は、nil を返します。
asctime -> String
[permalink][rdoc]ctime -> String
時刻を asctime(3) の形式の文字列に変換します。た だし、末尾の改行文字 "\n" は含まれません。
mday -> Integer
[permalink][rdoc]day -> Integer
日を整数で返します。
p Time.local(2000, 1, 1).day #=> 1
isdst -> bool
[permalink][rdoc]dst? -> bool
自身が表す日時が夏時間なら true を返します。そうでないなら false を返します。
ENV['TZ'] = 'US/Pacific' Time.local(2000, 7, 1).isdst #=> true Time.local(2000, 1, 1).isdst #=> false
eql?(other) -> bool
[permalink][rdoc]other が Time かそのサブクラスのインスタンスであり自身と時刻が等しい場合に true を返します。そうでない場合に false を返します。
getgm -> Time
[permalink][rdoc]getutc -> Time
タイムゾーンを協定世界時に設定した Time オブジェクトを新しく 生成して返します。
t = Time.local(2000,1,1,20,15,1) #=> Sat Jan 01 20:15:01 CST 2000 t.gmt? #=> false y = t.getgm #=> Sun Jan 02 02:15:01 UTC 2000 y.gmt? #=> true t == y #=> true
getlocal -> Time
[permalink][rdoc]タイムゾーンを地方時に設定した Time オブジェクトを新しく生成 して返します。
t = Time.utc(2000,1,1,20,15,1) #=> Sat Jan 01 20:15:01 UTC 2000 t.utc? #=> true l = t.getlocal #=> Sat Jan 01 14:15:01 CST 2000 l.utc? #=> false t == l #=> true
gmt? -> bool
[permalink][rdoc]utc? -> bool
self のタイムゾーンが協定世界時に設定されていれば真を返します。
utc_offset -> Integer
[permalink][rdoc]gmt_offset -> Integer
gmtoff -> Integer
協定世界時との時差を秒を単位とする数値として返します。
地方時が協定世界時よりも進んでいる場合(アジア、オーストラリアなど) には正の値、遅れている場合(アメリカなど)には負の値になります。
p Time.now.zone # => "JST" p Time.now.utc_offset # => 32400
タイムゾーンが協定世界時に設定されている場合は 0 を返します。
p Time.now.zone # => "JST" p Time.now.getgm.utc_offset # => 0
gmtime -> self
[permalink][rdoc]utc -> self
タイムゾーンを協定世界時に設定します。
このメソッドを呼び出した後は時刻変換を協定世界時として行ないます。
Time#localtime, Time#gmtime の挙動はシステムの localtime(3) の挙動に依存します。Time クラ スでは時刻を起算時からの経過秒数として保持していますが、ある特定の 時刻までの経過秒は、システムがうるう秒を勘定するかどうかによって異 なる場合があります。システムを越えて Time オブジェクトを受け 渡す場合には注意する必要があります。
t = Time.now #=> Wed Apr 09 08:56:03 CDT 2003 t.gmt? #=> false t.gmtime #=> Wed Apr 09 13:56:03 UTC 2003 t.gmt? #=> true
hour -> Integer
[permalink][rdoc]時を整数で返します。
localtime -> self
[permalink][rdoc]タイムゾーンを地方時に設定します。
このメソッドを呼び出した後は時刻変換を協定地方時として行ないます。
Time#localtime, Time#gmtime の挙動はシステムの localtime(3) の挙動に依存します。Time クラ スでは時刻を起算時からの経過秒数として保持していますが、ある特定の 時刻までの経過秒は、システムがうるう秒を勘定するかどうかによって異 なる場合があります。システムを越えて Time オブジェクトを受け 渡す場合には注意する必要があります。
t = Time.utc(2000, "jan", 1, 20, 15, 1) t.utc? #=> true t.localtime #=> 2000-01-01 14:15:01 -0600 t.utc? #=> false
min -> Integer
[permalink][rdoc]分を整数で返します。
mon -> Integer
[permalink][rdoc]month -> Integer
月を整数で返します。
p Time.local(2000, 1, 1).month #=> 1
sec -> Integer
[permalink][rdoc]秒を整数で返します。
Time.mktime(2000, 1, 1).sec #=> 0
通常は0から59を返しますが、うるう秒の場合は60を返します。
ENV['TZ'] = 'right/UTC' Time.mktime(2005, 12, 31, 23, 59, 60).sec #=> 60
strftime(format) -> String
[permalink][rdoc]時刻を format 文字列に従って文字列に変換した結果を返します。
現在の実装では、このメソッドは、システムの strftime(3) をそのまま使用しています。そのためここにあげた指示子以外のものが使 用できる場合があります。ただし、上記以外の指示子を使用した場合、移 植性をそこなう可能性がある点に注意してください。
t = Time.now t.strftime("Printed on %m/%d/%Y") #=> "Printed on 04/09/2003" t.strftime("at %I:%M%p") #=> "at 08:56AM"
succ -> Time
[permalink][rdoc]self に 1 秒足した Time オブジェクトを生成して返します。
t = Time.now p t p t.succ # => Sun Jul 18 01:41:22 JST 2004 Sun Jul 18 01:41:23 JST 2004
to_a -> Array
[permalink][rdoc]時刻を10要素の配列で返します。
その要素は順序も含めて以下の通りです。
p Time.now # => Mon Oct 20 06:02:10 JST 2003 p Time.now.to_a # => [10, 2, 6, 20, 10, 2003, 1, 293, false, "JST"]
要素の順序は C 言語の tm 構造体に合わせています。ただし、 tm 構造体に zone はありません。
注意: C 言語の tm 構造体とは異なり、month は 1 月に対 して 1 を返し、year は 1998 年に対して 1998 を返します。また、 yday は 1 から数えます。
to_f -> Float
[permalink][rdoc]起算時からの経過秒数を浮動小数点数で返します。1 秒に満たない経過も 表現されます。
t = Time.now "%10.5f" % t.to_f #=> "1049896564.13654" t.to_i #=> 1049896564
to_i -> Integer
[permalink][rdoc]tv_sec -> Integer
起算時からの経過秒数を整数で返します。
to_s -> String
[permalink][rdoc]時刻を date(1) のような形式の文字列に変換します。
self.strftime("%a %b %d %H:%M:%S %Z %Y")
と同じです。
p Time.now.to_s # => "Mon Oct 20 06:02:10 JST 2003"
usec -> Integer
[permalink][rdoc]tv_usec -> Integer
時刻のマイクロ秒の部分を整数で返します。
wday -> Integer
[permalink][rdoc]曜日を0(日曜日)から6(土曜日)の整数で返します。
yday -> Integer
[permalink][rdoc]1月1日を1とした通算日(1から366まで)を整数で返します。
Time.mktime(2000, 1, 1).yday #=> 1
うるう年の場合は、2月29日も含めた通算日を返します。
# うるう年でない場合 Time.mktime(2003, 1, 1).yday #=> 1 Time.mktime(2003, 3, 1).yday #=> 60 Time.mktime(2003, 12, 31).yday #=> 365 # うるう年の場合 Time.mktime(2004, 1, 1).yday #=> 1 Time.mktime(2004, 2, 29).yday #=> 60 Time.mktime(2004, 12, 31).yday #=> 366
year -> Integer
[permalink][rdoc]年を整数で返します。
p Time.local(2000, 1, 1).year #=> 2000
zone -> String
[permalink][rdoc]タイムゾーンを表す文字列を返します。
p Time.now.zone #=> "JST"