如何在Rails上获取ruby中的月份名称?

时间:2010-06-11 11:00:44

标签: ruby-on-rails ruby

所以我在我看来创建:

<%=date=Date.today%>

如何获取当月的名称?我试图做某事......

 <%= DATE::ABBR_MONTHNAMES(date.month)%>    

但没有成功。我一直收到错误:未初始化的常量ActionView::Base::CompiledTemplates::MONTHNAMES

如何初始化常量或是否有其他方法可以使该名称超出日期格式?

非常感谢任何答案!

6 个答案:

答案 0 :(得分:93)

参考this

<% @date = Date.today  %>  
<%= @date.strftime("%B")%>

如果

@date >> Fri, 11 Jun 2010

然后

@date.strftime("%B") >> "June"

答案 1 :(得分:27)

如果您只关注月份名称,则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"
   ]

答案 2 :(得分:8)

如果您想要本地化的月份名称,请尝试:

I18n.t('date.month_names')[date.month]

示例:

I18n.t('date.month_names')[12] #=> "Dezembro"

答案 3 :(得分:4)

如果您需要重复使用特定的自定义日期/时间格式,则可以扩展ActiveSupport日期/时间帮助程序。

e.g。如果在config / environment.rb中定义以下内容

ActiveSupport::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

中有详细记录

答案 4 :(得分:2)

选择您想要的内容

 Date.parse('5-jan-2017').strftime('%B')

结果:

  

=&GT; &#34; 1&#34;

Date.parse('5-jan-2017').strftime('%b')

结果:

  

=&GT; &#34;扬&#34;

对于大多数与日期相关的问题,请参阅此链接 http://www.foragoodstrftime.com/

答案 5 :(得分:0)

这应该对您有帮助 https://www.shortcutfoo.com/app/dojos/ruby-dates/cheatsheet

Date::MONTHNAMES
Date::DAYNAMES