2015-09-03 5 views

Antwort

11

Verwenden Sie Formatzeichenfolge.

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

arbeiten. wird akzeptieren. –

+3

es funktioniert, aber ignoriert die locale –

+0

@ArupRakshit yep, das stimmt, aber ich dachte, es könnte noch nützlich sein, zu erwähnen. –

26

Sie können seit der von Monats- Konstante

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

In meinem Fall musste ich den Monatsnamen "lets say September" aus einer Ganzzahl holen, diese ganze Zahl ist alles, was ich habe und ich habe keine Kontrolle darüber, sie zu ändern, also habe ich dieses '<% = Datum :: MONTHNAMES [Monat] verwendet %> 'arbeitete wie ein Charme – saadlulu

12

Ich denke, verwenden Sie es mit Hilfe von I18n Modul durchgeführt werden sollte, da strftime ignoriert die locale:

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

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

ich wollte nur dies zu posten. Dies ist die beste Lösung, mit I18n-Modul. –

7

Ruby-Date-Klasse bietet ein konstantes Array von Monatsnamen. Sie können Monatszahl als Index übergeben und wird

Date::ABBR_MONTHNAMES[10] 
# Nov 

Oder Sie können auch Name des Monats ab dem Datum mit strftime% B formater wie

Date.today.strftime(%B) 
# September 
erhalten Monatsname

Date::MONTHNAMES[10] 
# November 

zu bekommen abgekürzter Name des Monats erhalten

ähnlich

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

Wenn Ihre Anwendung mehrsprachig ist oder eine andere Sprache als Englisch verwendet, können Sie den lokalisierten Monatsnamen mit Hilfe von I18n

+1

Summiert die drei Optionen. Ich bevorzuge die individuellen Antworten, die auf und ab abgestimmt werden, um ihre relativen Vorzüge zu zeigen. –

Verwandte Themen