Ich habe eine Wochentags-Ganzzahl (0,1,2 ...) und muss den Namen des Tages ("Montag", "Dienstag", ...) erhalten.
Gibt es eine eingebaute Python-Funktion oder eine Möglichkeit, dies zu tun?
Hier ist die Funktion, die ich geschrieben habe, die funktioniert, aber ich wollte etwas aus der eingebauten datetime-Bibliothek.
def dayNameFromWeekday(weekday):
if weekday == 0:
return "Monday"
if weekday == 1:
return "Tuesday"
if weekday == 2:
return "Wednesday"
if weekday == 3:
return "Thursday"
if weekday == 4:
return "Friday"
if weekday == 5:
return "Saturday"
if weekday == 6:
return "Sunday"
Es ist mehr Pythonic, das calendar-Modul zu verwenden :
>>> import calendar
>>> list(calendar.day_name)
['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']
Sie können auch Abkürzungen für übliche Tagesnamen verwenden:
>>> list(calendar.day_abbr)
['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
Dann indizieren Sie, wie Sie möchten:
>>> calendar.day_name[1]
'Tuesday'
(Wenn Montag nicht der erste Tag der Woche ist, verwenden Sie setfirstweekday , um ihn zu ändern.)
Die Verwendung des Kalendermoduls hat den Vorteil, dass der Standort bekannt ist:
>>> import locale
>>> locale.setlocale(locale.LC_ALL, 'de_DE')
'de_DE'
>>> list(calendar.day_name)
['Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag', 'Sonntag']
Ich habe das Kalendermodul verwendet:
import calendar
calendar.day_name[0]
'Monday'
Wenn Sie nur den Tagnamen aus dem datetime-Objekt drucken möchten, können Sie Folgendes verwenden:
current_date = datetime.now
current_date.strftime('%A') # will return "Wednesday"
current_date.strftime('%a') # will return "Wed"
Es ist sehr leicht:
week = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]
week[weekday]
Sie können eine Liste verwenden, aus der Sie ein Element basierend auf Ihrem Argument erhalten:
def dayNameFromWeekday(weekday):
days = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]
return days[weekday]
Wenn Sie die Funktion benötigen, um keinen Fehler zu verursachen, wenn Sie eine ungültige Nummer eingegeben haben, z. B. "8", können Sie prüfen, ob das Element der Liste vorhanden ist, bevor Sie es zurückgeben:
def dayNameFromWeekday(weekday):
days = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]
return days[weekday] if 0 < weekday < len(days) else None
Diese Funktion kann wie erwartet verwendet werden:
>>> dayNameFromWeekday(6)
Sunday
>>> print(dayNameFromWeekday(7))
None
Ich bin nicht sicher, ob es eine Möglichkeit gibt, dies in datetime
zu integrieren, aber dies ist immer noch ein sehr effizienter Weg.
Sie können dafür eingebaute Funktionen verwenden, vorausgesetzt, Sie müssen den Tag anhand des bestimmten Datums suchen.
import calendar
month,day,year = 9,19,1995
ans =calendar.weekday(year,month,day)
print(calendar.day_name[ans])
calendar.weekday (Jahr, Monat, Tag) - Gibt den Wochentag (0 ist Montag) für Jahr (1970–…), Monat (1–12), Tag (1–31) zurück.
calendar.day_name - Ein Array, das die Wochentage im aktuellen Gebietsschema darstellt
weitere Informationen - https://docs.python.org/2/library/calendar.html#calendar.weekday
Sie können Ihre eigene Liste erstellen und mit format verwenden.
import datetime
days_ES = ["Domingo", "Lunes", "Martes", "Miércoles", "Jueves", "Viernes", "Sábado"]
t = datetime.datetime.now()
f = t.strftime("{%w} %Y-%m-%d").format(*days_ES)
print(f)
Drucke:
Lunes 2018-03-12