2010-06-11 51 views
37

,所以我创造我的观点​​:如何在Rails的ruby中获取月份的名称?

<%=date=Date.today%> 

我要如何月份出了名的日期?我试图做的像

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

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

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

将非常感谢任何答案!

回答

85

参考this

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

如果

@date >> Fri, 11 Jun 2010 

然后

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

我希望有'Date.today.month_name'。 – Chloe 2017-06-12 01:58:56

+1

@Chloe: class Date; def month_name; self.strftime( “%B”);结束;结束 – MustModify 2018-02-02 17:46:00

4

如果你有,你需要重复使用一个特定的自定义日期/时间格式,那么你可以延长ActiveSupport日期/时间助手。

例如如果你定义在你的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

有据可查
+2

查看日期/时间转换器to_formatted_s。这允许你定义日期格式(比如':month_only')并使用date.to_formatted_s(:month_only),这样你可以最大限度地重用你的strftime使用。 – 2010-06-11 15:03:40

24

如果您只是看月份名称,轨道提供的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" 
    ] 
1

选择你想要什么

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

结果:

=> "January"

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

结果:

=> "Jan"

对于大部分的进一步日期相关的问题,请参阅此链接 http://www.foragoodstrftime.com/

1

如果你想有一个本地化的月份名称,请尝试:

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

例子:

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