組込ライブラリ(Time)
時刻。
成果物
情報源
Time
時刻を表すクラスです。
Time.now は現在の時刻を返します。 File.mtime などが返すファイルのタイムスタンプは Time オブジェクトです。
Time オブジェクトは時刻を起算時からの経過秒数で保持しています。起算時は協定世界時(UTC、もしくはその旧称から GMT とも表記されます) の 1970年1月1日午前0時です。なお、うるう秒を勘定するかどうかはシステムによります。
Time オブジェクトが格納可能な時刻の範囲は環境によって異なっていましたが、 Ruby 1.9.2 からは OS の制限の影響を受けません。
また、Time オブジェクトは協定世界時と地方時のどちらのタイムゾーンを使用するかのフラグを内部に保持しています。タイムゾーンのフラグは Marshal データに保持されます。
p Marshal.load(Marshal.dump(Time.now.gmtime)).zone # => "UTC"
time ライブラリによって、Time.parse, Time.rfc2822, Time.httpdate, Time.iso8601 等が拡張されます。
Ruby 1.9.2 以降の Time クラスのデザインの詳細は https://staff.aist.go.jp/tanaka-akira/pub/sapporo-rubykaigi-02-akr-2009.pdf や「APIデザインケーススタディ」(https://gihyo.jp/book/2016/978-4-7741-7802-8) の第4章を参照してください。
localtime(3) も参照してください。
C 言語との違いに注意
C 言語の tm 構造体とは異なり、month は 1 月に対して 1 を返し、year は 1998 年に対して 1998 を返します。また、 yday は 1 から数えます。
メンバ抜粋
特異メソッド
at gm local mktime new now utc
インスタンスメソッド
+ - <=> asctime ceil ctime day dst? eql? floor friday? getgm getlocal getutc gmt? gmt_offset gmtime gmtoff hash hour inspect isdst localtime mday min mon monday? month nsec round saturday? sec strftime subsec sunday? thursday? to_a to_f to_i to_r to_s tuesday? tv_nsec tv_sec tv_usec usec utc utc? utc_offset wday wednesday? yday year zone
メソッド | 概要 |
---|---|
now ,new |
現在時刻 |
local ,mktime ,new |
地方時 |
gm ,utc |
協定世界時 |
new
, now
new -> Time now -> Time new(year, mon = nil, day = nil, hour = nil, min = nil, sec = nil, zone = nil) -> Time
p Time.now # => 2009-06-24 12:39:54 +0900
p Time.new(2008, 6, 21, 13, 30, 0, "+09:00") # => 2008-06-21 13:30:00 +0900
at
at(time) -> Time at(time, in:) -> Time at(time, usec) -> Time at(time, usec, in:) -> Time at(seconds, xseconds, unit) -> Time at(seconds, xseconds, unit, in:) -> Time
Time.at(0) # => 1970-01-01 09:00:00 +0900 Time.at(Time.at(0)) # => 1970-01-01 09:00:00 +0900 Time.at(Time.at(0).getutc) # => 1970-01-01 00:00:00 UTC Time.at(946702800) # => 2000-01-01 14:00:00 +0900 Time.at(-284061600) # => 1960-12-31 15:00:00 +0900 Time.at(946684800.2).usec # => 200000 Time.at(1582721899, in: "+09:00") # => 2020-02-26 21:58:19 +0900 Time.at(1582721899, in: 9*60*60) # => 2020-02-26 21:58:19 +0900 Time.at(1582721899, in: "UTC") # => 2020-02-26 12:58:19 UTC Time.at(1582721899, in: "C") # => 2020-02-26 13:58:19 +0300
Time.at(946684800, 123456.789).nsec # => 123456789
Time.at(946684800, 123.456789, :millisecond).nsec # => 123456789 Time.at(946684800, 123456.789, :usec).nsec # => 123456789 Time.at(946684800, 123456.789, :microsecond).nsec # => 123456789 Time.at(946684800, 123456789, :nsec).nsec # => 123456789
gm
, utc
gm(year, mon = 1, day = 1, hour = 0, min = 0, sec = 0, usec = 0) -> Time utc(year, mon = 1, day = 1, hour = 0, min = 0, sec = 0, usec = 0) -> Time gm(sec, min, hour, mday, mon, year, wday, yday, isdst, zone) -> Time utc(sec, min, hour, mday, mon, year, wday, yday, isdst, zone) -> Time
p Time.gm(2000, 1, 1) # => 2000-01-01 00:00:00 UTC p Time.utc(2000, 1, 1) # => 2000-01-01 00:00:00 UTC
local
, mktime
local(year, mon = 1, day = 1, hour = 0, min = 0, sec = 0, usec = 0) -> Time mktime(year, mon = 1, day = 1, hour = 0, min = 0, sec = 0, usec = 0) -> Time local(sec, min, hour, mday, mon, year, wday, yday, isdst, zone) -> Time mktime(sec, min, hour, mday, mon, year, wday, yday, isdst, zone) -> Time
p Time.local(2000, 1, 1) # => 2000-01-01 00:00:00 +0900 p Time.mktime(2000, 1, 1) # => 2000-01-01 00:00:00 +0900
対象環境
- Raspbierry pi 4 Model B
- Raspberry Pi OS buster 10.0 2020-08-20 ※
- bash 5.0.3(1)-release
- Ruby 3.0.2
$ uname -a Linux raspberrypi 5.10.52-v7l+ #1441 SMP Tue Aug 3 18:11:56 BST 2021 armv7l GNU/Linux