如何在 ruby​​ 中将一位数变成两位数?

发布于 2024-11-16 13:44:56 字数 243 浏览 0 评论 0原文

Time.new.month 返回 10 月之前任何月份的一位数字表示形式(例如 6 月是 6),但我想要 2 位数格式(即而不是 <代码>6我想要06)。

我编写了以下解决方案,我要求查看一些其他/更好的解决方案。

s = 6.to_s; s[1]=s[0]; s[0] = '0'; s #=> '06'

Time.new.month returns a single digit representation of any month prior to October (e.g. June is 6), but I want a 2-digit format (i.e. instead of 6 I want 06).

I wrote the following solution, and I am asking to see some other/better solutions.

s = 6.to_s; s[1]=s[0]; s[0] = '0'; s #=> '06'

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

貪欢 2024-11-23 13:44:56

对于您的需要,我认为最好的仍然是

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

For your need I think the best is still

Time.strftime("%m")

as mentioned but for general use case the method I use is

str = format('%02d', 4)
puts str

depending on the context I also use this one which does the same thing:

str = '%02d %s %04d' % [4, "a string", 56]
puts str

Here is the documentation with all the supported formats: http://ruby-doc.org/core-2.3.1/Kernel.html#method-i-sprintf

∝单色的世界 2024-11-23 13:44:56

您可以使用类似 printf 的语法:

irb> '%02d' % 6
=> "06"

或者

str = '%02d' % 6

因此:

s = '%02d' % Time.new.month
=> "06"

请参阅 字符串#%

You can use this printf-like syntax:

irb> '%02d' % 6
=> "06"

or

str = '%02d' % 6

So:

s = '%02d' % Time.new.month
=> "06"

See the documentation for String#%.

半暖夏伤 2024-11-23 13:44:56

Mat 的回答指出您可以使用 % 运算符,这很好,但我想指出另一种方法,即使用 rjust 方法字符串类:

str = 6.to_s.rjust(2,'0')  # => "06"

Mat's answer pointing out that you can use the % operator is great, but I would like to point out another way of doing it, using the rjust method of the String class:

str = 6.to_s.rjust(2,'0')  # => "06"
霞映澄塘 2024-11-23 13:44:56

如果您尝试格式化整个日期或日期和时间(而不仅仅是月份),您可能需要使用 strftime

m = Time.now.strftime('%m')
# => "06"
t = Time.now.strftime('%Y-%m-%dT%H:%M:%SZ%z')
# => "2011-06-18T10:56:22Z-0700"

这将使您可以轻松访问所有常用的日期和时间格式。

If you're trying to format an entire date or date and time (rather than just the month), you might want to use strftime:

m = Time.now.strftime('%m')
# => "06"
t = Time.now.strftime('%Y-%m-%dT%H:%M:%SZ%z')
# => "2011-06-18T10:56:22Z-0700"

That will give you easy access to all the usual date and time formats.

冷血 2024-11-23 13:44:56

使用 sprintf:例如:

sprintf("%02d", s)

您可以在 irb 中

>> sprintf("%02d", s)
=> "06"

You can use sprintf:

sprintf("%02d", s)

e.g. in irb:

>> sprintf("%02d", s)
=> "06"
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文