web-dev-qa-db-fra.com

Obtenir le nom du jour de Weekday int

J'ai un entier de la semaine (0,1,2 ...) et je dois obtenir le nom du jour ("lundi", "mardi", ...).

Existe-t-il une fonction ou une manière de le faire en Python?

Voici la fonction que j'ai écrite, qui marche mais je voulais quelque chose de la lib datetime intégrée.

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

C'est plus Pythonic d'utiliser le module calendar :

>>> import calendar
>>> list(calendar.day_name)
['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']

Ou, vous pouvez utiliser les abréviations courantes des noms de jours: 

>>> list(calendar.day_abbr)
['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']

Puis indexez comme vous le souhaitez:

>>> calendar.day_name[1]
'Tuesday'

(Si lundi n'est pas le premier jour de la semaine, utilisez setfirstweekday pour le changer)

L'utilisation du module d'agenda présente l'avantage d'être sensible à l'emplacement:

>>> import locale
>>> locale.setlocale(locale.LC_ALL, 'de_DE')
'de_DE'
>>> list(calendar.day_name)
['Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag', 'Sonntag']
62
dawg

J'ai utilisé le module de calendrier:

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

Si vous avez juste besoin d'imprimer le nom du jour à partir de l'objet datetime, vous pouvez l'utiliser comme ceci:

current_date = datetime.now
current_date.strftime('%A')  # will return "Wednesday"
current_date.strftime('%a')  # will return "Wed"
7
Nik.exe

C'est très facile:

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

Vous pouvez utiliser une liste contenant un élément en fonction de votre argument:

def dayNameFromWeekday(weekday):
    days = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]
    return days[weekday]

Si vous aviez besoin que la fonction ne provoque pas d'erreur si vous avez entré un nombre non valide, par exemple "8", vous pouvez vérifier si cet élément de la liste existe avant de le renvoyer:

def dayNameFromWeekday(weekday):
    days = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]
    return days[weekday] if 0 < weekday < len(days) else None

Cette fonction peut être utilisée comme vous le souhaitiez:

>>> dayNameFromWeekday(6)
Sunday
>>> print(dayNameFromWeekday(7))
None

Je ne suis pas sûr qu'il y ait un moyen de faire cela dans datetime, mais c'est toujours un moyen très efficace.

1
Aaron Christiansen

Vous pouvez utiliser des fonctions intégrées pour cela, par exemple, supposons que vous deviez trouver le jour en fonction de la date spécifique.

import calendar

month,day,year = 9,19,1995
ans =calendar.weekday(year,month,day)

print(calendar.day_name[ans])

calendar.weekday (year, month, day) - Renvoie le jour de la semaine (0 correspond au lundi) pour l'année (1970–…), le mois (1-12) et le jour (1-31).

calendar.day_name - Un tableau qui représente les jours de la semaine dans les paramètres régionaux actuels

pour plus de référence - https://docs.python.org/2/library/calendar.html#calendar.weekday

0
Samarth Saxena

Vous pouvez créer votre propre liste et l'utiliser avec le format.

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)

Impressions:

Lunes 2018-03-12
0
Anton vBR