2

Ruby で現在の時刻の文字列を取得したい:

"Time is " + Time.new.month + "/" + Time.new.day + "/" + Time.new.year

しかし、「Fixnum を String に変換できません」と表示されます。どうすればこれを修正できますか?

4

4 に答える 4

4

または、ジョブに適したツールを使用することもできます: 時刻の書式設定。

Time.new.strftime "Time is %m/%d/%Y" # => "Time is 11/13/2012"
于 2012-11-12T21:43:30.450 に答える
3

あなたが使用することができます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")
于 2012-11-12T21:41:00.563 に答える
3

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

于 2012-11-12T21:42:47.690 に答える
1

可能な限り、連結よりも文字列補間を優先してください。その(スレッド)ではっきりとわかるように、文字列補間を使用すると自動的に呼び出さto_sれます。

文字列補間の使用:

「時間は #{Time.new.month}/#{Time.new.day}/#{Time.new.year} です」

于 2012-11-12T22:44:17.717 に答える