====== Dates et Heures ====== ===== Date et heure ===== import datetime d = datetime.date(1971, 4, 22) t = datetime.time(8, 45) Combiner une date avec une heure : import datetime d = datetime.date(1971, 4, 22) t = datetime.time(8, 45) dt = datetime.datetime.combine(d, t) ===== Date et heure actuelles ===== import datetime today = datetime.date.today() => Renvoie un objet ''datetime.date'' import datetime now = datetime.datetime.now() => Renvoie un objet ''datetime.datetime'' ===== Extraire la date d'une valeur date/heure ===== Obtenir un objet **datetime.date** à partir d'un objet **datetime.datetime** import datetime datetime.datetime.now() # datetime.datetime(2020, 12, 17, 7, 11, 9, 23066) datetime.datetime.now().date # datetime.date(2020, 12, 17) ===== Conversion de date/heure vers chaîne ===== Voir: [[https://stackoverflow.com/questions/2150739/iso-time-iso-8601-in-python]] import datetime datetime.datetime.now().strftime("%m/%d/%Y, %H:%M:%S") # '12/14/2020, 06:49:17' datetime.datetime.now().strftime("%Y%m%d-%H%M") # '20201412-0649' Format **ISO 8601** : import datetime datetime.date.today().isoformat() # '2020-12-14' datetime.datetime.now().isoformat() # '2020-12-14T06:50:13.265235' ===== Conversion de chaîne vers date/heure ===== import datetime datetime.datetime.strptime("1971-04-22 08:30:25", "%Y-%m-%d %H:%M:%S") # datetime.datetime(1971, 4, 22, 8, 30, 25) datetime.datetime.strptime("1971-04-22", "%Y-%m-%d") # datetime.datetime(1971, 4, 22, 0, 0) datetime.datetime.strptime("1971-04-22", "%Y-%m-%d").date() # datetime.date(1971, 4, 22) Format **ISO 8601** :!: Python min **3.7** :!: : import datetime datetime.date.fromisoformat("1971-04-22") # datetime.date(1971, 4, 22) datetime.datetime.fromisoformat("1971-04-22T08:30:25") # datetime.datetime(1971, 4, 22, 8, 30, 25) ===== Début et fin de mois ===== Dates de début et de fin du mois écoulé : import datetime # date d'aujourd'hui today = datetime.date.today() # trouver le premier jour du mois en cours firstDay = today.replace(day = 1) # reculer d'un jour => dernier jour du mois dernier lastMonthEnd = firstDay - datetime.timedelta(days = 1) # trouver le premier jour du mois dernier lastMonthStart = lastMonthEnd.replace(day = 1) => les variables ''lastMonthStart'' et ''lastMonthDay'' sont du type ''datetime.date''. Dates de début et de fin du mois en cours : import datetime, calendar def first_day_this_month(): today = datetime.date.today() return today.replace(day = 1) def last_day_this_month(): today = datetime.date.today() monthrange = calendar.monthrange(today.year, today.month) return today.replace(day = monthrange[1]) => Ces fonctions renvoient une valeur de type ''datetime.date'' ===== Numéro de semaine / Jour de la semaine ===== ==== Jour de la semaine ==== import datetime today = datetime.date.today() # indice du jour (voir tableau ci-dessous) jour = today.weekday() # nom du jour print("Nous sommes un " + today.strftime('%A')) ^ 0 | Monday | ^ 1 | Tuesday | ^ 2 | Wednesday | ^ 3 | Thursday | ^ 4 | Friday | ^ 5 | Saturday | ^ 6 | Sunday | ==== Numéro de semaine ==== import datetime today = datetime.date.today() # Afficher le numéro de semaine avec %W print("Nous sommes en semaine " + today.strftime('%W')) # L'obtenir sous forme numérique semaine = int(today.strftime('%W')) ==== Isocalendar ==== Une meilleure méthode :-) permet d'obtenir la semaine et le jour de la semaine, mais **attention** les numéros de jours correspondent à une norme différente : ^ 1 | Monday | ^ 2 | Tuesday | ^ 3 | Wednesday | ^ 4 | Thursday | ^ 5 | Friday | ^ 6 | Saturday | ^ 7 | Sunday | import datetime today = datetime.date.today() i = today.isocalendar() annee = i.year semaine = i.week jour = i.weekday