Odpowiedzi:
Z tego widać, że calendar.month_name[3]
to zwróci March
, a indeks tablicy 0
jest pustym ciągiem, więc nie trzeba się też martwić indeksowaniem zerowym.
import datetime
mydate = datetime.datetime.now()
mydate.strftime("%B")
Zwraca: grudzień
Więcej informacji na stronie doc Python
[EDYCJA: świetny komentarz @GiriB] Możesz również użyć, %b
która zwraca krótką notację dla nazwy miesiąca.
mydate.strftime("%b")
W powyższym przykładzie powróci Dec
.
mydate.strftime("%b")
zwraca krótką notację dla nazwy miesiąca. (W powyższym przykładzie powróci Dec
)
import datetime
monthinteger = 4
month = datetime.date(1900, monthinteger, 1).strftime('%B')
print month
kwiecień
Nie jest to tak pomocne, jeśli potrzebujesz znać nazwę miesiąca dla danej liczby (1–12), ponieważ bieżący dzień nie ma znaczenia.
calendar.month_name[i]
lub
calendar.month_abbr[i]
są bardziej przydatne tutaj.
Oto przykład:
import calendar
for month_idx in range(1, 13):
print (calendar.month_name[month_idx])
print (calendar.month_abbr[month_idx])
print ("")
Przykładowe dane wyjściowe:
January
Jan
February
Feb
March
Mar
...
month_name
imonth_abbr
range(1, 13)
w twoim przykładzie, aby uzyskać wszystkie 12 miesięcy w wyniku.
Oferuję to w przypadku, gdy (tak jak ja) masz kolumnę liczb miesięcy w ramce danych:
df['monthName'] = df['monthNumer'].apply(lambda x: calendar.month_name[x])
Oto co bym zrobił:
from datetime import *
months = ["Unknown",
"January",
"Febuary",
"March",
"April",
"May",
"June",
"July",
"August",
"September",
"October",
"November",
"December"]
now = (datetime.now())
year = (now.year)
month = (months[now.month])
print(month)
Wyprowadza:
>>> September
(To była prawdziwa data, kiedy to napisałem)
Niektóre dobre odpowiedzi już korzystają z kalendarza, ale efekt ustawiania lokalizacji nie został jeszcze wspomniany.
Na przykład w języku francuskim:
import locale
import calendar
locale.setlocale(locale.LC_ALL, 'fr_FR')
assert calendar.month_name[1] == 'janvier'
assert calendar.month_abbr[1] == 'jan'
Jeśli planujesz używać setlocale
w swoim kodzie, zapoznaj się z poradami, zastrzeżeniami i sekcjami programu piszącego rozszerzenia z dokumentacji. Przedstawiony tutaj przykład nie jest reprezentatywny dla tego, jak należy go używać. W szczególności z tych dwóch sekcji:
Generalnie złym pomysłem jest wywoływanie setlocale () w niektórych procedurach bibliotecznych, ponieważ jako efekt uboczny wpływa na cały program […]
Moduły rozszerzeń nigdy nie powinny wywoływać setlocale () […]
calendar
. Mogę zaktualizować tekst.
Dla arbitaray zakres numerów miesięcy
month_integer=range(0,100)
map(lambda x: calendar.month_name[x%12+start],month_integer)
da poprawną listę. Dostosuj start
parametr, od którego zaczyna się styczeń na liście liczb całkowitych miesiąca.
8.1 datetime - Podstawowe typy daty i godziny - Dokumentacja Python 2.7.17 https://docs.python.org/2/library/datetime.html#strftime-strptime-behavior
Lista wszystkich argumentów strftime. Nazwy miesięcy i fajne rzeczy, takie jak formatowanie, pozostawiły zero zero. Przeczytaj całą stronę, na przykład takie zasady, jak „naiwne” argumenty. Oto lista w skrócie:% niedz., Pon.,…, Sob
% A niedziela, poniedziałek,…, sobota
% w Dzień tygodnia jako liczba, gdzie 0 to niedziela
% d Dzień miesiąca 01, 02,…, 31
% b sty, luty,…, gru
% B styczeń, luty,…, grudzień
% m Numer miesiąca jako uzupełniony zerami 01, 02,…, 12
% y 2-cyfrowy rok wypełniony zerami 00, 01,…, 99
% Y 4 cyfry Rok 1970, 1988, 2001, 2013
% H Godzina (zegar 24-godzinny) wyściełany zerami 00, 01,…, 23
% I Godzina (zegar 12-godzinny) wyściełany zerami 01, 02,…, 12
% p AM lub PM.
% M Minuta wypełniona zerami 00, 01,…, 59
% S Drugi, uzupełniony zerami 00, 01,…, 59
% f Mikrosekundowe wypełnienie zerowe 000000, 000001,…, 999999
Przesunięcie% z UTC w postaci + HHMM lub -HHMM +0000, -0400, +1030
% Z Nazwa strefy czasowej UTC, EST, CST
% j Dzień roku wypełniony zerami 001, 002,…, 366
% U Numer tygodnia wypełnionego zera roku, Dni przed pierwszą niedzielą to tydzień 0
% W Numer tygodnia w roku (poniedziałek jako pierwszy dzień)
% c Przedstawienie daty i godziny ustawień regionalnych. Wt 16 sierpnia 21:30:00 1988
Reprezentacja daty% x ustawienia regionalne. 08/16/1988 (en_US)
Reprezentacja czasowa% X ustawień regionalnych. 21:30:00
%% dosłowny znak „%”.
Stworzyłem własną funkcję konwertującą liczby na odpowiadający im miesiąc.
def month_name (number):
if number == 1:
return "January"
elif number == 2:
return "February"
elif number == 3:
return "March"
elif number == 4:
return "April"
elif number == 5:
return "May"
elif number == 6:
return "June"
elif number == 7:
return "July"
elif number == 8:
return "August"
elif number == 9:
return "September"
elif number == 10:
return "October"
elif number == 11:
return "November"
elif number == 12:
return "December"
Następnie mogę wywołać funkcję. Na przykład:
print (month_name (12))
Wyjścia:
>>> December
calendar
module. Jaka może być korzyść z utworzenia własnej funkcji w celu odtworzenia tych samych wyników? Ponadto słownik byłby znacznie szybszy niż seria instrukcji elif.