如何在Ruby中将一位数字变成两位数字?

|
Time.new.month
返回十月之前任何月份的一位数字表示形式(例如,六月是
6
),但是我想要2位数格式(即不是want1ѭ而是
06
)。 我编写了以下解决方案,并要求查看其他/更好的解决方案。
s = 6.to_s; s[1]=s[0]; s[0] = \'0\'; s #=> \'06\'
    
已邀请:
        为了您的需要,我认为最好的仍然是
Time.strftime(\"%m\")
如前所述,但对于一般用例,我使用的方法是
str = format(\'%02d\', 4)
puts str
根据上下文的不同,我还可以使用此功能执行相同的操作:
str = \'%02d %s %04d\' % [4, \"a string\", 56]
puts str
以下是具有所有受支持格式的文档:http://ruby-doc.org/core-2.3.1/Kernel.html#method-i-sprintf     

bab

        您可以使用类似于“ 8”的语法:
irb> \'%02d\' % 6
=> \"06\"
要么
str = \'%02d\' % 6
所以:
s = \'%02d\' % Time.new.month
=> \"06\"
请参阅文档以获取String#%。     
        Mat \的答案指出您可以使用
%
运算符很棒,但是我想指出另一种使用
String
类的
rjust
方法的方法:
str = 6.to_s.rjust(2,\'0\')  # => \"06\"
    
        如果您要格式化整个日期或日期和时间(而不是仅格式化月份),则可能要使用
strftime
m = Time.now.strftime(\'%m\')
# => \"06\"
t = Time.now.strftime(\'%Y-%m-%dT%H:%M:%SZ%z\')
# => \"2011-06-18T10:56:22Z-0700\"
这样,您可以轻松访问所有常用的日期和时间格式。     
        您可以使用sprintf:
sprintf(\"%02d\", s)
例如在irb:
>> sprintf(\"%02d\", s)
=> \"06\"
    

要回复问题请先登录注册