【发布时间】:2015-11-29 07:29:00
【问题描述】:
我可以得到下个月的月份和年份:
(Time.now + 1.month).month
# => 10
(Time.now + 1.month).year
# => 2015
如何从10 获得"October"?
【问题讨论】:
标签: ruby-on-rails ruby date time
我可以得到下个月的月份和年份:
(Time.now + 1.month).month
# => 10
(Time.now + 1.month).year
# => 2015
如何从10 获得"October"?
【问题讨论】:
标签: ruby-on-rails ruby date time
Ruby Date 类提供了一个包含月份名称的常量数组。您可以将月份编号作为索引传递,并获得月份名称
Date::MONTHNAMES[10]
# November
获取缩写的月份名称
Date::ABBR_MONTHNAMES[10]
# Nov
或者您也可以使用 strftime %B 格式化程序从日期获取月份名称,例如
Date.today.strftime(%B)
# September
类似
(Time.now + 1.month).strftime('%B')
# November
如果您的应用程序是多语言或使用非英语语言,您可以使用 I18n 获取本地化月份名称
I18n.l(Time.now, format: "%B")
【讨论】:
Date::MONTHNAMES[10] == "October"。
我认为应该在 I18n 模块的帮助下完成,因为strftime 忽略了语言环境:
(Time.now + 1.month).strftime("%B") # => 'October'
I18n.l(Time.now + 1.month, format: "%B") # => 'Oktober'
【讨论】:
您可以使用日期的月份名称常量
Date::MONTHNAMES[10] => "October"
【讨论】:
<%= Date::MONTHNAMES[month] %> 工作像一个魅力
使用格式字符串。
(Time.now + 1.month).strftime("%B")
# => "October"
【讨论】:
10 就是这种情况下的一个例子。有问题的10,因为该问题是在Sep 月份提出的,并且添加了1 个月至今,即Oct。问题中的示例并不是真正的直接问题。