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

nec*_*ker 46 ruby ruby-on-rails

所以我在我的视图中创建:

<%=date=Date.today%>
Run Code Online (Sandbox Code Playgroud)

我如何获得该日期的名称?我试着做某事

 <%= DATE::ABBR_MONTHNAMES(date.month)%>    
Run Code Online (Sandbox Code Playgroud)

但没有成功.我不断收到错误:未初始化的常量ActionView::Base::CompiledTemplates::MONTHNAMES

我如何初始化常量或是否有任何其他方法来获取日期格式的名称?

非常感谢任何答案!

Sal*_*lil 98

参考这个

<% @date = Date.today  %>  
<%= @date.strftime("%B")%>
Run Code Online (Sandbox Code Playgroud)

如果

@date >> Fri, 11 Jun 2010
Run Code Online (Sandbox Code Playgroud)

然后

@date.strftime("%B") >> "June"
Run Code Online (Sandbox Code Playgroud)

  • 我希望有'Date.today.month_name`. (2认同)
  • @Chloe:日期类;def 月份名称;self.strftime("%B"); 结尾; 结尾 (2认同)

Que*_*tin 28

如果您只关注月份名称,则Date::MONTHNAMESrails提供的常量是最简单的解决方案:

   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"
   ]
Run Code Online (Sandbox Code Playgroud)


Rep*_*lês 10

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

I18n.t('date.month_names')[date.month]
Run Code Online (Sandbox Code Playgroud)

例:

I18n.t('date.month_names')[12] #=> "Dezembro"
Run Code Online (Sandbox Code Playgroud)


eda*_*vey 5

如果您有需要重复使用的特定自定义日期/时间格式,那么您可以扩展 ActiveSupport 日期/时间助手。

例如,如果您在 config/environment.rb 中定义以下内容

ActiveSupport::CoreExtensions::Time::Conversions::DATE_FORMATS.merge!(:full_english => "%A %B %d, %Y at %I:%M %p")
Run Code Online (Sandbox Code Playgroud)

然后当你调用Time.now.to_s(:full_english)你的观点时,你会得到类似的东西:

"Friday June 11, 2010 at 12:53 PM"
Run Code Online (Sandbox Code Playgroud)

Ruby 的方法在http://apidock.com/ruby/Time/strftimestrftime中有详细记录

  • 查看日期/时间转换器 to_formatted_s。这允许您定义日期格式(如 `:month_only`)并使用 date.to_formatted_s(:month_only) ,以便您最大限度地重用 strftime 使用。 (2认同)