it-swarm.com.de

Tagname von Wochentag int. Erhalten

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"
38
GER

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']
62
dawg

Ich habe das Kalendermodul verwendet:

import calendar
calendar.day_name[0]
'Monday'
11
Sharpowski

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"
7
Nik.exe

Es ist sehr leicht:

week = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]
week[weekday]
1
xiº

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.

1

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

0
Samarth Saxena

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
0
Anton vBR