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"
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']
J'ai utilisé le module de calendrier:
import calendar
calendar.day_name[0]
'Monday'
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"
C'est très facile:
week = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]
week[weekday]
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.
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
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