[言語別TIME処理] Ruby時間処理

2017/06/14

Ruby テクノロジー プログラミング 特集

t f B! P L
時間操作のRuby編です。 他の言語と違い、この辺の扱いが非常に簡単に行なえます。 多少、受け渡し値の変数型に気をつけないといけませんが、全て1行での処理で目的の値が取得できます。 やはり人気No1言語であるだけありますね〜。 ちなみに、関数の定義がdefだけど、pythonと同時に使っていると、ちょいちょい「end」を付け忘れるのは、Rubyerのあるあるでしょうね。 ※その逆もあるかな?

時間操作の要件

  1. 1900年からの秒数(UnixTime)
  2. sleep処理
  3. 1番からYmdHisの取得(曜日含む)
  4. YmdHisから1番の取得
  5. ミリ秒の取得
  6. タイムゾーン(GMT)の取得
  7. 本プログラムの経過秒数

ソース

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' このライブラリ読み込みを行っていないと、この関数でエラーがでます。

人気の投稿

このブログを検索

ごあいさつ

このWebサイトは、独自思考で我が道を行くユゲタの少し尖った思考のTechブログです。 毎日興味がどんどん切り替わるので、テーマはマルチになっています。 もしかしたらアイデアに困っている人の助けになるかもしれません。

ブログ アーカイブ