:pぴー.sendせんど(:pぴー, :pぴー)

mokoaki
mokoriso@gmail.com

2017/07/22

Time

Ruby技術者認定試験の書籍写経メモ

全然関係ないけど、Railsでは Time.now とかは使っちゃアカンよ。Time.zone.now か Time.current を使うんじゃ

Timeオブジェクトの生成

Time.new  
Time.now  
Time.at  
Time.mktime Time.local
Time.gm Time.utc

Time.new Time.now メソッド

Time.now.class
=> Time

Time.now
=> 2017-02-22 00:00:00 +0900

Time.at メソッド

Time.at(1234567890)
=> 2009-02-14 08:31:30 +0900

Time.at(1234567890, 1234567890)
=> 2009-02-14 08:52:04 +0900

Time.mktime Time.local メソッド

Time.local(2017, 1, 1, 1, 1, 1, 0)
=> 2017-01-01 01:01:01 +0900
Time.local(1, 1, 1, 1, 1, 2017, 0, 1, false, 'JST')
=> 2017-01-01 01:01:01 +0900

ちなみに time#to_a で引数が10のパターンの値が取得できる

Time.local(2017, 1, 1, 1, 1, 1, 0).to_a
=> [1, 1, 1, 1, 1, 2017, 0, 1, false, "JST"]

Time.gm Time.utc メソッド

Time.utc(2017, 1, 1, 1, 1, 1, 0)
=> 2017-01-01 01:01:01 UTC
Time.utc(1, 1, 1, 1, 1, 2017, 0, 1, false, 'JST')
=> 2017-01-01 01:01:01 UTC

timeオブジェクトのメソッド

time#year  
time#month time#mon
time#mday time#day
time#hour  
time#min  
time#sec  
time#usec time#tv_sec マイクロ秒
time#wday   曜日
time#yday   1月1日からの日数
time#zone   タイムゾーン
time#isdst time#dst? 夏時間?
time#gmt? time#utc? UTC?
time#gmt_offset time#gmtoff UTCとの秒差

タイムゾーンの変更

time#localtime   ローカルタイム 破壊的メソッド
time#gmtime time#utc UTC 破壊的メソッド
time#getlocal   ローカルタイム  
time#getgm time#getutc UTC  

ローカルタイムに変更、UTCに変更、ローカルタイムの新しいオブジェクトを生成、UTCの新しいオブジェクトを生成 という感じ

timeオブジェクトの演算

time#+ 秒数を加算
time#- 秒数を減算

timeオブジェクト同士の減算

time#- 秒差をFloatオブジェクトで取得

timeオブジェクトの変換

time#to_i tv_sec 起算日からの秒数
time#to_f   起算日からの秒数
time#to_a   秒, 分, 時, 日, 月, 年, 曜日, 年日, 夏時間の真理値, タイムゾーン
time#to_s   UNIXコマンドのdateコマンド風の文字列
time#strftime   指定したフォーマットに従って文字列に変換

time#strftimeのフォーマット

%A 英語の曜日
%a 英語の曜日の省略形
%B 英語の月
%b 英語の月の省略形
%c 日付と時刻
%d 日(01-31)
%H 24時間制の時(00-23)
%l 12時間制の時(01-12)
%j 年中の通算日(1-366)
%M 分(00-59)
%m 月(01-12)
%p 午前/午後(AM/PM)
%S 秒(00-60)
%U 第何週 日曜日始まり(00-53)
%W 第何週 月曜日始まり(00-53)
%w 曜日 日曜日が0(0-6)
%X 時刻
%x 日付
%Y 西暦
%y 西暦の下2桁(00-99)
%Z タイムゾーン
%% %
Time.now.strftime('%Y/%m/%d %T')
=> "2017/02/22 00:00:00"