2

現在の時刻から時、分、秒を取得して、「時分秒」の形式で出力しようとしています。たとえば、「121103」。しかし、次のコードで実行しようとすると、先行ゼロが出力されません

irb(main):021:0> ct = Time.now
=> 2012-11-06 12:11:03 +0100
irb(main):022:0> "#{ct.hour}#{ct.min}#{ct.sec}"
=> 12113

出力は「12113」ですが、「121103」が必要です。

そのための方法またはオプションはありますか。正規表現で抽出できますが、もっと簡単な方法があるかどうか疑問に思っています。

4

2 に答える 2

5

時間のフォーマットを使用する必要があります:

ct = Time.now
ct # => Tue Nov 06 15:31:03 +0400 2012
ct.strftime('%H%M%S') # => "153103"
于 2012-11-06T11:29:25.877 に答える
2

日付/時刻オブジェクトを処理する正しい方法であるため、Sergioの回答を受け入れる必要があります。

ただし、Stringクラスを使用して実行する必要がある場合は、rjustメソッドを使用して先行ゼロを追加できます。

"#{ct.hour}#{ct.min}#{ct.sec}" # 12113
"#{ct.hour}#{ct.min}#{String(ct.sec).rjust(2,"0")}" # 121103
于 2012-11-06T11:55:11.063 に答える