Ruby で現在の時刻の文字列を取得したい:
"Time is " + Time.new.month + "/" + Time.new.day + "/" + Time.new.year
しかし、「Fixnum を String に変換できません」と表示されます。どうすればこれを修正できますか?
Ruby で現在の時刻の文字列を取得したい:
"Time is " + Time.new.month + "/" + Time.new.day + "/" + Time.new.year
しかし、「Fixnum を String に変換できません」と表示されます。どうすればこれを修正できますか?
または、ジョブに適したツールを使用することもできます: 時刻の書式設定。
Time.new.strftime "Time is %m/%d/%Y" # => "Time is 11/13/2012"
あなたが使用することができますto_s
"Time is " + Time.new.month.to_s + "/" + Time.new.day.to_s + "/" + Time.new.year.to_s
しかし、より良いイベントは使用することですstrftime
Time.new.strftime("Time is %-m/%e/%Y")
Ruby は文字列を文字列に追加することしかできないため、変換が必要です。注として、二重引用符で囲まれた文字列で補間された要素は自動的に変換されます。
now = Time.new
"Time is #{now.month}/#{now.day}/#{now.year}"
それらが自動的に変換される配列からそれらを結合することも可能です:
now = Time.new
"Time is " + [ now.month, now.day, now.year ].join('/')
sprintf
スタイルの補間を使用することもできます。
now = Time.new
"Time is %d/%d/%d" % [ now.month, now.day, now.year ]
2 番目のものを使用すると、書式設定をより詳細に制御できます。たとえば、2 か所まで%02d
パディングします。0
Sergio が指摘しているように、おそらくより良いアイデアである、この書式設定のための特別な目的の関数があります。また、今Time.now
のところ従来の方法ですが、は任意の時間を作成するためのものです。Time.new
可能な限り、連結よりも文字列補間を優先してください。その(スレッド)ではっきりとわかるように、文字列補間を使用すると自動的に呼び出さto_s
れます。
文字列補間の使用:
「時間は #{Time.new.month}/#{Time.new.day}/#{Time.new.year} です」