時間操作のRuby編です。
他の言語と違い、この辺の扱いが非常に簡単に行なえます。
多少、受け渡し値の変数型に気をつけないといけませんが、全て1行での処理で目的の値が取得できます。
やはり人気No1言語であるだけありますね〜。
ちなみに、関数の定義がdefだけど、pythonと同時に使っていると、ちょいちょい「end」を付け忘れるのは、Rubyerのあるあるでしょうね。
※その逆もあるかな?
時間操作の要件
- 1900年からの秒数(UnixTime)
- sleep処理
- 1番からYmdHisの取得(曜日含む)
- YmdHisから1番の取得
- ミリ秒の取得
- タイムゾーン(GMT)の取得
- 本プログラムの経過秒数
ソース
require 'time'
# 1
def getUnixTime()
return Time.now.to_i
end
st = getUnixTime()
print "Unixtime : ", st ,"\n"
# 2
def setSleep(sec)
sleep(sec)
end
print "sleep-start..(3s)"
setSleep(3)
print ".sleep-end" ,"\n"
# 3
def getUnixtime2Ymdhis(unixtime)
t = Time.at(unixtime).strftime("%Y/%m/%d %H:%M:%S")
return t
end
print "Unixtime->Y/M/D H:I:S", getUnixtime2Ymdhis(st) ,"\n"
# 4
def getYmdhis2Unixtime(y , m , d , h , i , s)
s = y ,"-", m ,"-", d ," ", h ,":", i ,":", s
t = Time.parse(s.to_s)
return t.to_i
end
print "Y-M-D H:I:S -> Unixtime : ", getYmdhis2Unixtime(2015 , 1 , 1 , 12 , 13 , 14) ,"\n "
# 5
def getMicroSec()
t = Time.now
return t.strftime("%3N")
end
print "Microtime : ", getMicroSec() ,"\n"
# 6
def getGMT()
return Time.now.strftime("%z")
end
print "GMT : ", getGMT() ,"\n"
# 7
ed = getUnixTime()
print "Passage : ", (ed - st) ,"\n"
実行
$ ruby timeFunction.rb
Unixtime : 1495358138
sleep-start..(3s).sleep-end
Unixtime->Y/M/D H:I:S2017/05/21 18:15:38
Y-M-D H:I:S -> Unixtime : 1495358415
Microtime : 935
GMT : +0900
Passage : 3
解説
DateTime(時間フォーマット)の取得
Time.now
UnixTimeへの変換
Timenow.to_i
UnixTime -> DateTime
unixtime = Timenow.to_i
datetime = Time.at(unixtime)
年月日などの細かな情報取得は「strftime」
年 : %Y
月 : %m
日 : %d
時 : %H
分 : %M
秒 : %S
ミリ秒 : %3N
GMT : %z
曜日 : %w
曜日名 : %a (Sub , Mon , Tue , Wed , Thu , Fri , Sat)
午前午後 : %P (am , pm)
Time.parseを使う場合はrequireが必要
require 'time'
このライブラリ読み込みを行っていないと、この関数でエラーがでます。
0 件のコメント:
コメントを投稿