Objectifs
- Etre capable d'effectuer l'analyse, le formatage et l'arithmétique des dates et des heures.
- Apprendre comment utiliser les objets
datetime et date en Python.
- Etre capable à utiliser une fonction de formatage pour formater l'heure et la date en Python.
Présentation
- Il existe deux types d’objets de date et d’heure: «
naïfs» et «conscients».
- Si un objet d'heure ou de date est naïf, il ne contient pas d'informations permettant de se comparer ou de se localiser par rapport à d'autres objets de date ou d'heure.
- Un objet conscient, d'autre part, possède la connaissance du fuseau horaire auquel il appartient ou des informations d'heure d'été. De cette façon, il peut se localiser par rapport à d'autres objets conscients.
Types disponibles
class datetime.date
- Une date naïve idéalisée, en supposant que le calendrier Grégorien actuel a toujours existé et qu'il existera toujours. Attributs : année, mois et jour.
class datetime.time
- Un temps idéalisé, indépendant d'une date particulière, en supposant qu'une journée est composée d'exactement 24*60*60 secondes (il n'y a pas ici de notion de "seconde bissextile"). Attributs : hour, minute, second, microsecond et tzinfo.
class datetime.datetime
- Une combinaison d'une date et d'une heure. Attributs : year, month, day, hour, minute, second, microsecond, et tzinfo.
class datetime.timedelta
- Une durée qui exprime la différence entre deux instances de date, time ou datetime en microsecondes.
class datetime.tzinfo
- Une classe de base abstraite pour les objets portants des informations sur les fuseaux horaires. Ceux-ci sont utilisés par les classes datetime et time pour donner une notion personnalisable d'ajustement d'horaire (par exemple la prise en compte d'un fuseau horaire et/ou de l'heure d'été).
class datetime.timezone
- Une classe qui implémente la classe de base abstraite tzinfo en tant qu'offset fixe par rapport au temps UTC.
Les codes de formatage des dates dans le fuseau horaire américain
- L'exemple de formatage est : dimanche 05/05/2019 17:43:33
| symbole |
Sens |
Exemple |
%a |
Nom abrégé du jour de la semaine |
'Wed' |
%A |
Nom complet en semaine |
'Wednesday' |
%w |
Numéro de semaine - 0 (dimanche) à 6 (samedi) |
'0' |
%d |
Jour du mois (zéro capitonné) |
'5' |
%b |
Nom abrégé du mois |
'mai' |
%B |
Nom du mois complet |
'mai' |
%m |
Mois de l'année |
'01' |
%y |
Année sans siècle |
'19' |
%Y |
Année avec siècle |
'2019' |
%H |
Heure à partir de 24 heures |
'17' |
%I |
Heure à partir de 12 heures |
'05' |
%p |
MATIN APRÈS-MIDI |
'PM' |
%M |
Minutes |
'43' |
%S |
Secondes |
'33' |
%f |
Microsecondes |
'000000' |
%z |
Décalage UTC pour les objets sensibles au fuseau horaire |
'-0500' |
%Z |
Nom du fuseau horaire |
'EST' |
%j |
Jour de l'année |
'125' |
%W |
Semaine de l'année |
'17' |
%c |
Représentation de la date et de l'heure pour les paramètres régionaux actuels |
'Mon mai 17 17:00:00 2019' |
%x |
Date de représentation pour les paramètres régionaux actuels |
'05/17/19' |
%X |
Représentation de l'heure pour les paramètres régionaux actuels |
'17:43:33' |
%% |
Un %caractère littéral |
'%'
- Pour afficher les dates en français importer le module "
locale" et appeler la constante "LC_TIME".
- Cette constante affecte la fonction : "
time.strftime".
import locale
locale.setlocale(locale.LC_TIME,'')
import time
print time.strftime('%A %d/%m/%Y %H:%M:%S')
"""Affiche
dimanche 05/05/2019 17:43:33 """ |
Comment utiliser les classes Date et DateTime
La classe date
- Avant d'exécuter le code pour
datetime, il est important d'importer les modules de date et d'heure
- Créer une instance de l'objet date.
- Afficher la date d'aujourd'hui avec la fonction
date.today
# 3- Afficher la date d'aujourd'hui
print("Aujourd'hui nous somme le : ",aujourdhui)
- La fonction
date.today a plusieurs propriétés qui lui sont associées. Nous pouvons imprimer individuellement jour / mois / année et bien d'autres choses # 3-1- Afficher le jour de la date d'aujourd'hui
print("Aujourd'hui c'est : ",aujourdhui.day)
# 3-1- Afficher le mois en cours
print("Le mois courant c'est : ",aujourdhui.month)
# 3-1- Afficher l'année en cours
print("L'année courant c'est : ",aujourdhui.year)
- La fonction
date.today() donne également le numéro du jour de la semaine, 0 pour lundi et 6 pour dimanche. # 3-2- Afficher le numéro de jour de la semaine
print("Le numéro numéro de jour de la semaine : ",aujourdhui.weekday())
La classe datetime
- Avant d'exécuter le code pour
datetime, il est important d'importer les modules de date et d'heure
- Comme les objets de date, l'utilisation des objets "
DATETIME" en Python, donne la date avec l'heure en heures, minutes, secondes et millisecondes. # 2- Créer une instance de l'objet date.
aujourdhui=datetime.now()
# 3- Afficher la date d'aujourd'hui
print("Aujourd'hui nous somme le : ",aujourdhui)
# ce qui affiche:.....2020-08-19 10:12:38.392542
- Afficher uniquement l'heure actuelle sans la date avec Python
# 4- Afficher l'heure actuelle
heure=datetime.time(datetime.now())
print("Il est : ",heure)
# ce qui affiche:.....10:12:38.392542
- Nous avions importé la classe de temps. Nous lui attribuerons la valeur actuelle du temps en utilisant
datetime.now ()
- Nous attribuons la valeur de l'heure courante à la variable heure.
Applications
- Utiliser les fonctions Python pour afficher le jour actuel en toute lettre
La fonction date.weekday() renvoie le jour de la semaine sous forme de nombre entier, où lundi vaut 0 et dimanche vaut 6.
# 1- importer les modules de date, time, datetime
from datetime import date, time, datetime
def application():
#Afficher le jour actuelle en toute lettre
aujourdhui=datetime.now()
leJour = date.weekday(aujourdhui)
lesJours = ['Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi', 'Dimanche']
print("Aujourd'hui c'est le jour numéro : %d "% leJour)
print("Aujourd'hui c'est le : ",lesJours[leJour])
if __name__ == "__main__":
application()
""" Ce qui affiche:
Aujourd'hui c'est le jour numéro : 2
Aujourd'hui c'est le : Mercredi
"""
- Utiliser les fonctions Python pour afficher le mois en cours en toute lettre
La fonction datetime.now().month() renvoie le mois de l'année sous forme de nombre entier, où Janvier vaut 1 et décembre vaut 12.
# 1- importer les modules de date, time, datetime
from datetime import date, time, datetime
def application():
#Afficher le mois actuel en toute lettre
aujourdhui=datetime.now()
leMois = aujourdhui.month
lesMois = ['Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin',
'Juillet', 'Août',
'Septembre', 'Octobre', 'Novembre', 'Décembre']
print("Le mois courant est numéro : %d "% leMois)
print("Le mois courant est : ",lesMois[leMois-1])
if __name__ == "__main__":
application()
""" Ce qui affiche:
Le mois courant est numéro : 8
Le mois courant est : Août
"""