Antworten:
Daraus können Sie ersehen, dass calendar.month_name[3]
dies zurückkehren würde March
, und der Array-Index von 0
ist die leere Zeichenfolge, sodass Sie sich auch keine Gedanken über die Nullindizierung machen müssen.
import datetime
mydate = datetime.datetime.now()
mydate.strftime("%B")
Rückgabe: Dezember
Weitere Informationen finden Sie auf der Python-Doc-Website
[EDIT: großartiger Kommentar von @GiriB] Sie können auch %b
die Kurznotation für den Monatsnamen verwenden.
mydate.strftime("%b")
Für das obige Beispiel würde es zurückkehren Dec
.
mydate.strftime("%b")
Gibt die Kurznotation für den Monatsnamen zurück. (Für das obige Beispiel würde es zurückkehren Dec
)
import datetime
monthinteger = 4
month = datetime.date(1900, monthinteger, 1).strftime('%B')
print month
April
Dies ist nicht so hilfreich, wenn Sie nur den Monatsnamen für eine bestimmte Nummer (1 - 12) kennen müssen, da der aktuelle Tag keine Rolle spielt.
calendar.month_name[i]
oder
calendar.month_abbr[i]
sind hier nützlicher.
Hier ist ein Beispiel:
import calendar
for month_idx in range(1, 13):
print (calendar.month_name[month_idx])
print (calendar.month_abbr[month_idx])
print ("")
Beispielausgabe:
January
Jan
February
Feb
March
Mar
...
month_name
undmonth_abbr
range(1, 13)
in Ihrem Beispiel zu verwenden, damit Sie alle 12 Monate in der Ausgabe erhalten.
Ich biete dies an, falls Sie (wie ich) eine Spalte mit Monatszahlen in einem Datenrahmen haben:
df['monthName'] = df['monthNumer'].apply(lambda x: calendar.month_name[x])
Das würde ich tun:
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)
Es gibt aus:
>>> September
(Dies war das wahre Datum, als ich das schrieb)
Einige gute Antworten verwenden bereits den Kalender, aber den Effekt des Festlegens des Gebietsschemas wurde noch nicht erwähnt.
Zum Beispiel auf Französisch:
import locale
import calendar
locale.setlocale(locale.LC_ALL, 'fr_FR')
assert calendar.month_name[1] == 'janvier'
assert calendar.month_abbr[1] == 'jan'
Wenn Sie setlocale
in Ihrem Code verwenden möchten, lesen Sie unbedingt die Tipps und Vorbehalte sowie die Abschnitte zum Erweiterungsschreiber aus der Dokumentation. Das hier gezeigte Beispiel ist nicht repräsentativ für die Verwendung. Insbesondere aus diesen beiden Abschnitten:
Es ist im Allgemeinen eine schlechte Idee, setlocale () in einer Bibliotheksroutine aufzurufen, da dies als Nebeneffekt das gesamte Programm betrifft […]
Erweiterungsmodule sollten niemals setlocale () aufrufen […]
calendar
. Ich kann den Text vielleicht aktualisieren.
Für den Arbitaray-Bereich von Monatszahlen
month_integer=range(0,100)
map(lambda x: calendar.month_name[x%12+start],month_integer)
wird korrekte Liste ergeben. Passen Sie den start
Parameter an, ab dem der Januar in der Monats-Ganzzahlliste beginnt.
8.1. Datum / Uhrzeit - Grundlegende Datums- und Uhrzeittypen - Python 2.7.17-Dokumentation https://docs.python.org/2/library/datetime.html#strftime-strptime-behavior
Eine Liste aller strftime-Argumente. Namen von Monaten und nette Dinge wie das Formatieren ließen keine Füllung. Lesen Sie die ganze Seite für Dinge wie Regeln für "naive" Argumente. Hier ist die Liste in Kürze:% a So, Mo,…, Sa.
% Ein Sonntag, Montag,…, Samstag
% w Wochentag als Zahl, wobei 0 Sonntag ist
% d Tag des Monats 01, 02,…, 31
% b Jan, Feb,…, Dez.
% B Januar, Februar,…, Dezember
% m Monatszahl als nullgefüllte 01, 02,…, 12
% y 2-stelliges Jahr mit Nullen aufgefüllt 00, 01,…, 99
% Y 4-stelliges Jahr 1970, 1988, 2001, 2013
% H Stunde (24-Stunden-Uhr) mit Nullen aufgefüllt 00, 01,…, 23
% I Stunde (12-Stunden-Uhr) nullgefüllt 01, 02,…, 12
% p AM oder PM.
% M Minute null gepolstert 00, 01,…, 59
% S Zweite Null-gepolsterte 00, 01,…, 59
% f Mikrosekunden null aufgefüllt 000000, 000001,…, 999999
% z UTC-Offset in der Form + HHMM oder -HHMM +0000, -0400, +1030
% Z Zeitzonenname UTC, EST, CST
% j Tag des Jahres mit Nullen aufgefüllt 001, 002,…, 366
% U Wochennummer des Jahres Null gepolstert, Tage vor dem ersten Sonntag sind Woche 0
% W Wochennummer des Jahres (Montag als erster Tag)
% c Darstellung von Datum und Uhrzeit des Gebietsschemas. Di 16. August 21:30:00 1988
% x Datumsangabe des Gebietsschemas. 16.08.1988 (en_US)
% X Zeitdarstellung des Gebietsschemas. 21:30:00
%% Literal '%' Zeichen.
Ich habe meine eigene Funktion erstellt, um Zahlen in den entsprechenden Monat umzuwandeln.
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"
Dann kann ich die Funktion aufrufen. Beispielsweise:
print (month_name (12))
Ausgänge:
>>> December
calendar
Modul vorhanden. Welchen Vorteil könnte es haben, eine eigene Funktion zu erstellen, um dieselben Ergebnisse zu replizieren? Außerdem wäre ein Wörterbuch viel schneller als eine Reihe von elif-Anweisungen.