如何在几秒钟内获得领先0?

时间:2012-11-06 11:22:55

标签: ruby date

我正在尝试从当前时间获得小时,分钟和秒,并将其打印为“hourminutesecond”格式。例如“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”。

是否有方法或选项。我可以用正则表达式提取它,但只是想知道是否有更简单的方法来做它。

2 个答案:

答案 0 :(得分:5)

您应该使用time formatting

ct = Time.now
ct # => Tue Nov 06 15:31:03 +0400 2012
ct.strftime('%H%M%S') # => "153103"

答案 1 :(得分:2)

你应该接受Sergio的答案,因为这是处理日期/时间对象的正确方法。

但是,如果必须使用String类,则可以使用rjust方法添加前导零。

"#{ct.hour}#{ct.min}#{ct.sec}" # 12113
"#{ct.hour}#{ct.min}#{String(ct.sec).rjust(2,"0")}" # 121103