Nazwa tego miesiąca (Date.today.month as name)


115

Używam Date.today.monthdo wyświetlenia numeru miesiąca. Czy istnieje polecenie pobrania nazwy miesiąca, czy też muszę przedstawić sprawę, aby ją uzyskać?


Odpowiedź Dylana nadal działa od Ruby 2.5.0
oneWorkingHeadphone

Odpowiedzi:


196

Date::MONTHNAMES[Date.today.month]dałoby ci „styczeń”. (Być może będziesz musiał require 'date'najpierw).


28
Date.today.strftime("%B")to lepszy sposób na zrobienie tego, imho. I to nie jest specyficzne dla szyn. Zobacz odpowiedź poniżej przez leafo.
Peter Berg

2
@PedroMorteRolo nadal działa dla mnie na Ruby 2.2.0 - upewnij się, że require 'date'najpierw.
Dylan Markow

121

Możesz także użyć I18n:

I18n.t("date.month_names") # [nil, "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]
I18n.t("date.abbr_month_names") # [nil, "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
I18n.t("date.month_names")[Date.today.month] # "December"
I18n.t("date.abbr_month_names")[Date.today.month] # "Dec"

Jak myślę, ta odpowiedź jest lepsza niż inne, ponieważ I18n zwraca nazwy miesięcy w bieżących lokalizacjach.
Stepan Zakharov

80

Możesz użyć strftime:

Date.today.strftime("%B") # -> November

http://www.ruby-doc.org/stdlib-1.9.3/libdoc/date/rdoc/Date.html#strftime-method


2
Tylko ostrzeżenie dla każdego, kto używa Ruby 2, muszę użyć Time.new.strftime("B")Dzisiaj i strftime są usunięte z Date
Sanarothe

7
Nie prawda. Oba są na miejscu w Ruby 2.0 i Ruby 2.1 . Zwróć uwagę, że nie są one dostępne, dopóki nie są dostępne require "date", ponieważ znajdują się w std-lib, a nie w rdzeniu.
pbyrne

16

Jeśli zależy Ci na lokalizacji, zrób to:

I18n.l(Time.current, format: "%B")

lub I18n.l(Date.new, format: '%B')zacząć od stycznia. Jeśli chcesz dodać miesiące, takie jak luty, użyjDate.new + 1.month
Rui Nunes

13

W przypadku Ruby 1.9 musiałem użyć:

Time.now.strftime("%B")

0

HTML Select month with I18n:

<select>
  <option value="">Choose month</option>
  <%= 1.upto(12).each do |month| %>
    <option value="<%= month %>"><%= I18n.t("date.month_names")[month] %></option>
  <% end %>
</select>
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.