908 votes

Comment obtenir le jour de la semaine à partir d'une date ?

Je veux trouver ce qui suit : étant donné une date ( datetime ), quel est le jour de la semaine correspondant ?

Par exemple, le dimanche est le premier jour, le lundi le deuxième jour, etc.

Et ensuite, si l'entrée est quelque chose comme la date d'aujourd'hui.

Exemple

>>> today = datetime.datetime(2017, 10, 20)
>>> today.get_weekday()  # what I look for

La sortie est peut-être 6 (puisque c'est vendredi)

1383voto

Simeon Visser Points 30697

Utilisez weekday() :

>>> import datetime
>>> datetime.datetime.today()
datetime.datetime(2012, 3, 23, 23, 24, 55, 173504)
>>> datetime.datetime.today().weekday()
4

De la documentation :

Renvoie le jour de la semaine sous la forme d'un nombre entier, où lundi vaut 0 et dimanche vaut 6.

117voto

nightcracker Points 34498

Utilisez date.weekday() lorsque le lundi est à 0 et le dimanche à 6

ou

date.isoweekday() quand le lundi est le 1 et le dimanche le 7

55voto

Ashwini Chaudhary Points 94431

J'ai résolu ceci pour un CodeChef question .

import datetime
dt = '21/03/2012'
day, month, year = (int(x) for x in dt.split('/'))    
ans = datetime.date(year, month, day)
print (ans.strftime("%A"))

36voto

Arnaldo Figueira Points 101

Une solution sans importation pour les dates postérieures à 1700/1/1

def weekDay(year, month, day):
    offset = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334]
    week   = ['Sunday', 
              'Monday', 
              'Tuesday', 
              'Wednesday', 
              'Thursday',  
              'Friday', 
              'Saturday']
    afterFeb = 1
    if month > 2: afterFeb = 0
    aux = year - 1700 - afterFeb
    # dayOfWeek for 1700/1/1 = 5, Friday
    dayOfWeek  = 5
    # partial sum of days betweem current date and 1700/1/1
    dayOfWeek += (aux + afterFeb) * 365                  
    # leap year correction    
    dayOfWeek += aux / 4 - aux / 100 + (aux + 100) / 400     
    # sum monthly and day offsets
    dayOfWeek += offset[month - 1] + (day - 1)               
    dayOfWeek %= 7
    return dayOfWeek, week[dayOfWeek]

print weekDay(2013, 6, 15) == (6, 'Saturday')
print weekDay(1969, 7, 20) == (0, 'Sunday')
print weekDay(1945, 4, 30) == (1, 'Monday')
print weekDay(1900, 1, 1)  == (1, 'Monday')
print weekDay(1789, 7, 14) == (2, 'Tuesday')

7voto

mathwizurd Points 31

En supposant que l'on vous donne le jour, le mois et l'année, vous pourriez le faire :

import datetime
DayL = ['Mon','Tues','Wednes','Thurs','Fri','Satur','Sun']
date = DayL[datetime.date(year,month,day).weekday()] + 'day'
#Set day, month, year to your value
#Now, date is set as an actual day, not a number from 0 to 6.

print(date)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X