所以我在我的视图中创建了:
<%=date=Date.today%>
如何从日期中获取月份的名称?我尝试过类似的方式:
<%= DATE::ABBR_MONTHNAMES(date.month)%>
但一直没有成功。我不断收到一个错误信息:未初始化常量ActionView::Base::CompiledTemplates::MONTHNAMES
如何初始化该常量或是否有其他方法可以从日期格式中获取名称呢?
非常感谢任何答案!
所以我在我的视图中创建了:
<%=date=Date.today%>
如何从日期中获取月份的名称?我尝试过类似的方式:
<%= DATE::ABBR_MONTHNAMES(date.month)%>
但一直没有成功。我不断收到一个错误信息:未初始化常量ActionView::Base::CompiledTemplates::MONTHNAMES
如何初始化该常量或是否有其他方法可以从日期格式中获取名称呢?
非常感谢任何答案!
参考 这个
<% @date = Date.today %>
<%= @date.strftime("%B")%>
如果
@date >> Fri, 11 Jun 2010
那么
@date.strftime("%B") >> "June"
如果你只需要月份的名称,Rails提供的Date::MONTHNAMES
常量是最简单的解决方案:
Date::MONTHNAMES =
[
[ 0] nil,
[ 1] "January",
[ 2] "February",
[ 3] "March",
[ 4] "April",
[ 5] "May",
[ 6] "June",
[ 7] "July",
[ 8] "August",
[ 9] "September",
[10] "October",
[11] "November",
[12] "December"
]
如果您想要本地化的月份名称,请尝试使用:
I18n.t('date.month_names')[date.month]
例子:
I18n.t('date.month_names')[12] #=> "Dezembro"
date.abbr_month_names
用于缩写月份名称。在开头有一个 nil
(空白)值,因此英语中的 January
映射到索引 1
。来源:https://github.com/svenfuchs/rails-i18n/blob/master/rails/locale/en.yml#L19 - abhchandActiveSupport::CoreExtensions::Time::Conversions::DATE_FORMATS.merge!(:full_english => "%A %B %d, %Y at %I:%M %p")
当你在视图中调用Time.now.to_s(:full_english)
时,你会获得类似下面的结果:
"Friday June 11, 2010 at 12:53 PM"
Ruby的strftime
方法在http://apidock.com/ruby/Time/strftime上有很好的文档说明。
选择你想要的东西
Date.parse('5-jan-2017').strftime('%B')
结果:
=> "一月"
Date.parse('5-jan-2017').strftime('%b')
结果:
=> "Jan"
对于你进一步的日期相关问题,请参考此链接 http://www.foragoodstrftime.com/
这应该会帮助你 https://www.shortcutfoo.com/app/dojos/ruby-dates/cheatsheet
Date::MONTHNAMES
Date::DAYNAMES
# config/locales/en.yml
en:
time:
formats:
default: "%F"
short: "%b %d"
long: "%b %d, %Y"
month: "%b"
使用它
i(Time.zone.today, format: :month)
Date.today.month_name
的功能。 - ChloeDate.today.strftime("%B")
- gk12345