Time.new.month返回10月之前的任何月份的一位数表示(例如,June是6),但我想要2位数格式(例如,我想要06而不是6)。我写了下面的解决方案,我要求看到一些其他/更好的解决方案。
Time.new.month
6
06
s = 6.to_s; s[1]=s[0]; s[0] = '0'; s #=> '06'
icnyk63a1#
为了你的需要我想最好的还是
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
mm5n2pyu2#
您可以使用类似printf的语法:
printf
irb> '%02d' % 6 => "06"
或
str = '%02d' % 6
因此:
s = '%02d' % Time.new.month => "06"
请参阅有关String#%的文档。
v7pvogib3#
Mat的回答指出您可以使用%操作符,这很棒,但我想指出另一种方法,使用String类的rjust方法:
%
String
rjust
str = 6.to_s.rjust(2,'0') # => "06"
ulmd4ohb4#
如果你想格式化一个完整的日期或日期和时间(而不仅仅是月份),你可能需要使用strftime:
strftime
m = Time.now.strftime('%m') # => "06" t = Time.now.strftime('%Y-%m-%dT%H:%M:%SZ%z') # => "2011-06-18T10:56:22Z-0700"
这将给予您可以轻松访问所有常用的日期和时间格式。
fgw7neuy5#
您可以使用sprintf:
sprintf("%02d", s)
例如,IRB:
>> sprintf("%02d", s) => "06"
5条答案
按热度按时间icnyk63a1#
为了你的需要我想最好的还是
如前所述,但对于一般用例,我使用的方法是
根据上下文,我还使用了这个做同样事情的方法:
以下是所有支持格式的文档:http://ruby-doc.org/core-2.3.1/Kernel.html#method-i-sprintf
mm5n2pyu2#
您可以使用类似
printf
的语法:或
因此:
请参阅有关String#%的文档。
v7pvogib3#
Mat的回答指出您可以使用
%
操作符,这很棒,但我想指出另一种方法,使用String
类的rjust
方法:ulmd4ohb4#
如果你想格式化一个完整的日期或日期和时间(而不仅仅是月份),你可能需要使用
strftime
:这将给予您可以轻松访问所有常用的日期和时间格式。
fgw7neuy5#
您可以使用sprintf:
例如,IRB: