2010-06-11 4 views
37

तो मैं मेरे विचार में बनाएँ:रेल पर रूबी में महीने का नाम कैसे प्राप्त किया जाए?

<%=date=Date.today%> 

कैसे मैं पुराना हो चुका महीने के नाम मिलता है? मैं

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

लेकिन सफलता के बिना sth करने की कोशिश कर रहा था। मुझे एक त्रुटि मिल रही है: अनियमित स्थिर 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

+1

@Chloe: कक्षा की तारीख; def month_name; self.strftime ("% बी '); समाप्त; अंत – MustModify

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" 

रूबी के strftime विधि अच्छी तरह से http://apidock.com/ruby/Time/strftime

पर दर्ज है
+2

दिनांक/समय कनवर्टर्स को_formatted_s पर देखें। यह आपको दिनांक स्वरूपों को परिभाषित करने की अनुमति देता है (जैसे ': month_only') और date.to_formatted_s (: month_only) का उपयोग करें ताकि आपको अपने बार-बार उपयोग के लिए अधिकतम पुन: उपयोग मिल सके। –

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" 
संबंधित मुद्दे