2015-09-03 14 views

risposta

11

Utilizzare la stringa di formato.

(Time.now + 1.month).strftime("%B") 
# => "October" 
+0

opere. accetterà. –

+3

funziona, ma ignora il locale –

+0

@ArupRakshit sì, è vero, ma ho pensato che potrebbe essere ancora utile menzionarlo. –

26

È possibile utilizzare monthNames di Data costanti

Date::MONTHNAMES[10] => "October" 
+0

Nel mio caso avevo bisogno di ottenere il nome del mese "diciamo settembre" da un numero intero, che l'intero è tutto ciò che ho e non ho alcun controllo sul cambiarlo, quindi ho usato questo '<% = Date :: MONTHNAMES [mese] %> 'ha funzionato come un fascino – saadlulu

12

penso che dovrebbe essere fatto con l'aiuto di modulo I18n, dal momento che strftime ignora il locale:

(Time.now + 1.month).strftime("%B") # => 'October' 

I18n.l(Time.now + 1.month, format: "%B") # => 'Oktober' 
+1

volevo solo postare questo. QUESTA è la soluzione migliore, usando il modulo I18n. –

7

Rubino classe Date prevede una serie costante di nomi di mesi. È possibile passare numero del mese come indice e otterrete nome del mese

Date::MONTHNAMES[10] 
# November 

Per ottenere abbreviato nome del mese

Date::ABBR_MONTHNAMES[10] 
# Nov 

Oppure si può anche ottenere il nome mese dalla data usando strftime% B Formater come

Date.today.strftime(%B) 
# September 

simile

(Time.now + 1.month).strftime('%B') 
# November 

Se l'applicazione è multi-linguale o usando un linguaggio altro allora inglese, è possibile ottenere localizzato nome del mese utilizzando I18n

I18n.l(Time.now, format: "%B") 
+1

Riassume le tre opzioni. Preferisco le risposte individuali che vengono votate su e giù per mostrare i loro meriti relativi. –