2010-06-11 65 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"