Outils pour utilisateurs

Outils du site


python:dates_et_heures

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
python/dates_et_heures.txt · Dernière modification: 2023/02/22 15:23 par marclebrun