memorandums

日々のメモです。

日時文字列からTimeへの変換(メモ)

ごくごく初心者的なメモです。VBで出力した日時文字列をTimeオブジェクトに変換する記述がわからずはまっていました。いろいろとやってみて最終的にわかったのはtimeライブラリを用いる方法です。これは本当に簡単。たった1行です。こんなところに書くまでもない話ですが。成長過程ということでメモします。

1: require 'time'
2: t = Time.parse("2010/4/1 1:2:3")
3: p t
4: p t += 1

1行目で組み込みのTimeクラスを拡張するtimeライブラリを読み込みます。2行目である日時文字列からTimeオブジェクトを生成してこれを変数tとします。3行目は横着していますがTimeオブジェクトを文字列化したものがコンソールに表示されます。4行目はTimeオブジェクトに1加えた結果(結果は1秒加えたことになる)結果が表示されます。


要は1・2行目さえわかっていれば問題解決です。ついでに、逆もメモしておきます。

5: p t.strftime('%Y/%m/%d %H:%M:%S')


もう恥さらしついでに、timeライブラリを知る前にあれこれやった結果、たどり着いたのは以下のような感じです。これでも一応答えはでますが。。。

require 'date'

d = DateTime.strptime("2010/4/1 1:2:3", "%Y/%m/%d %H:%M:%S")
p d

t = Time.mktime(d.year, d.month, d.day, d.hour, d.min, d.sec)
p t.strftime("%Y/%m/%d %H:%M:%S")

t += 1 #add 1 sec

p t.strftime("%Y/%m/%d %H:%M:%S")


じっくり集中して取り組まないと(本格的なアプリを2、3作った経験がないと)言語が使えるようになったとは言えないですね。。。ホント、実感します。入門書をいくらやってもほとんどは忘却の彼方へ。辞書的なマニュアル本をいくら積み重ねても組み合わせ方の経験がなければ宝の持ち腐れ。本当の勉強(技術習得)は、必要駆動的に学んだ方が効率がいいと思います。