Ruby勉強

インターネットの企画職な人がプログラミングを勉強するブログ

Ruby Time - Silver/Gold試験対策

現在時刻

Time.now #=> 例: 2015-09-10 07:31:38 +0900
Time.new #=> 例: 2015-09-10 07:31:38 +0900

指定した時間オブジェクトを返す。 Timeオブジェクトもしくは数値で指定。 数値はUnix起点時間である1970/1/1からの経過秒数

Time.at(1441000000) #=> 2015-08-31 14:46:40 +0900。数値が引数だとlocaltimeで出る
Time.now.to_i => unixtime秒数

引数で指定した協定世界時を返す

# gm(sec, min, hour, mday, mon, year, wday, yday, isdst, zone)
# utc(sec, min, hour, mday, mon, year, wday, yday, isdst, zone)
Time.gm(2015,1,1) #=> 2015-01-01 00:00:00 UTC。gmt(グリニッジ標準時) = utc(協定世界時)としているようだ。本来gmtは100年で18秒程度ズレるらしい
Time.utc(2015,1,1) #=> 2015-01-01 00:00:00 UTC

引数で指定した地方時間を返す

Time.local(2015,1,1) #=> 2015-01-01 00:00:00 +0900
Time.mktime(2015,1,1) #=> 2015-01-01 00:00:00 +0900
# 第一引数(年)の指定は必要。以降はnil(未指定)であっても最小値で計算される

Time.newも引数を指定するとlocal, utcのような使いかたが可能

Time.new(2015,1,1,0,0,0,9*60*60) #=> 2015-01-01 00:00:00 +0900
Time.new(2015,1,1,0,0,0,+0900) #=> 2015-01-01 00:00:00 +0900

Timeオブジェクト同士の引き算はFloatオブジェクト

Time.at(0) + 1 #=> 1970-01-01 09:00:01 +0900
Time.at(0) - 1 #=> 1970-01-01 08:59:59 +0900
Time.now - Time.utc(2013) #=> 84843710.593268。TimeオブジェクトFloatオブジェクトが特徴
Time.now.strftime("%Y/%m/%d") #=> 例: "2015/09/10"