在 Ruby / Rails 中从默认日期中删除开头“0”的最干净方法是什么?

发布于 2024-08-07 04:41:17 字数 213 浏览 7 评论 0原文

在 /initializers/time_formats.rb 中,我有这个:

Time::DATE_FORMATS[:profile] = "%m / %d / %Y"

但是,这显然会产生日期,例如: 09 / 08 / 2001

谷歌告诉我,我最好的选择是使用某种 gsub 正则表达式来编辑 0。这是真的还是有更好的选择?

In /initializers/time_formats.rb I have this:

Time::DATE_FORMATS[:profile] = "%m / %d / %Y"

However this obviously produces dates such as: 09 / 08 / 2001

Google tells me my best bet is to use some kind of gsub regular expression to edit out the 0's. Is this true or is there a better alternative?

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

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

发布评论

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

评论(3

棒棒糖 2024-08-14 04:41:17
@date = Time.new
@date.month #=> 10
@date.day   #=> 7
@date.year  #=> 2009

如果你想对某些部分使用格式字符串,你可以这样做:

@date.strftime("%B #{@date.day.ordinalize}, %Y") #=> October 7th, 2009
@date = Time.new
@date.month #=> 10
@date.day   #=> 7
@date.year  #=> 2009

if you want to use format string for some parts, you can do something like:

@date.strftime("%B #{@date.day.ordinalize}, %Y") #=> October 7th, 2009
痴情 2024-08-14 04:41:17

您可能可以使用 '%e' 来获取不带前导零的日期数字;然而,“strftime()”的手册页(通常是这些基于时间的转换的基础)并没有显示几个月来执行此操作的方法,因此正则表达式解决方案可能是一种方法,尽管可能还有其他方法更多 Ruby 惯用方法可以达到相同的结果。

You could probably use '%e' to get the day number without the leading zero; however, the manual page for 'strftime()' - which usually underlies these time-based conversions - does not show a way to do that for the months, so the regex solution is perhaps one way to do it, though there might be other more Ruby-idiomatic ways to achieve the equivalent result.

手长情犹 2024-08-14 04:41:17

您可以使用 lambda/proc 作为 Time::DATE_FORMATS 中的格式,例如请

Loading development environment (Rails 2.3.4)
>> Time::DATE_FORMATS[:my_format] = lambda { |time| "#{time.day}/#{time.month}/#{time.year}" }
=> #<Proc:0x000000010341a2e0@(irb):3>
>> 2.months.ago.to_s(:my_format)
=> "8/8/2009"

注意,默认 Time::DATE_FORMATS 对 :long_ordinal:rfc822 使用 lambda格式。

You can use a lambda/proc as a format in Time::DATE_FORMATS, e.g.

Loading development environment (Rails 2.3.4)
>> Time::DATE_FORMATS[:my_format] = lambda { |time| "#{time.day}/#{time.month}/#{time.year}" }
=> #<Proc:0x000000010341a2e0@(irb):3>
>> 2.months.ago.to_s(:my_format)
=> "8/8/2009"

Note that the default Time::DATE_FORMATS uses a lambda for both the :long_ordinal and :rfc822 formats.

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