Dates et heures

PythonBeginner
Pratiquer maintenant

Introduction

Le module datetime de Python fournit une série de classes pour manipuler les dates et les heures. Dans ce laboratoire, nous explorerons certaines des classes et fonctions les plus couramment utilisées de ce module et apprendrons à les utiliser pour effectuer diverses tâches telles que travailler avec des dates, des heures et des différences de temps.

Objectifs

  • Module datetime

Importer le module Datetime

Pour commencer à travailler avec le module datetime, nous devons d'abord l'importer.

Ouvrez une nouvelle session d'interpréteur Python :

python3

Cela peut être fait à l'aide de la ligne de code suivante :

import datetime

Travailler avec les dates

Le module datetime fournit la classe date pour travailler avec les dates. Pour créer un objet date représentant une date spécifique, nous pouvons utiliser le constructeur date(), qui prend trois arguments : l'année, le mois et le jour. Par exemple :

d = datetime.date(2021, 12, 31)
print(d)

Cela créera un objet date représentant le 31 décembre 2021 et l'affichera au format "AAAA-MM-JJ".

Travailler avec les heures

En plus des dates, le module datetime fournit également la classe time pour travailler avec les heures. Pour créer un objet time représentant une heure spécifique, nous pouvons utiliser le constructeur time(), qui prend trois arguments : l'heure, la minute et la seconde. Par exemple :

t = datetime.time(12, 30, 15)
print(t)

Cela créera un objet time représentant 12:30:15 PM et l'affichera au format "HH:MM:SS".

Combiner des dates et des heures

Pour travailler avec à la fois une date et une heure, nous pouvons utiliser la classe datetime, qui combine une date et une heure. Pour créer un objet datetime représentant une date et une heure spécifiques, nous pouvons utiliser le constructeur datetime(), qui prend six arguments : l'année, le mois, le jour, l'heure, la minute et la seconde. Par exemple :

dt = datetime.datetime(2021, 12, 31, 12, 30, 15)
print(dt)

Cela créera un objet datetime représentant le 31 décembre 2021 à 12:30:15 PM et l'affichera au format "AAAA-MM-JJ HH:MM:SS".

Travailler avec les Timedeltas

En plus de travailler avec des dates et des heures spécifiques, le module datetime fournit également la classe timedelta pour travailler avec des durées de temps. Un objet timedelta représente une durée de temps et peut être ajouté ou soustrait d'un objet datetime pour produire un nouveau objet datetime. Par exemple :

d1 = datetime.date(2021, 12, 31)
d2 = d1 + datetime.timedelta(days=1)
print(d2)

Cela créera un objet timedelta représentant un jour, l'ajoutera à l'objet date d1 et produira un nouveau objet date représentant le 1er janvier 2022 et l'affichera au format "AAAA-MM-JJ".

Mise en forme des dates et des heures

Le module datetime fournit la méthode strftime(), qui peut être utilisée pour formater un objet datetime sous forme de chaîne de caractères. Cette méthode prend une chaîne de formatage en argument, qui spécifie le format souhaité de la chaîne de sortie. Par exemple, le code suivant forme un objet datetime sous forme d'une chaîne de caractères au format "AAAA-MM-JJ HH:MM:SS" :

dt = datetime.datetime(2021, 12, 31, 12, 30, 15)
s = dt.strftime('%Y-%m-%d %H:%M:%S')
print(s)

Il affichera "2021-12-31 12:30:15"

Analyse des dates et des heures à partir de chaînes de caractères

Le module datetime fournit également la méthode de classe strptime(), qui peut être utilisée pour analyser une chaîne de caractères et créer un objet datetime. Cette méthode prend deux arguments : la chaîne de caractères à analyser et une chaîne de formatage qui spécifie le format attendu de la chaîne d'entrée. Par exemple, le code suivant analyse une chaîne de caractères au format "AAAA-MM-JJ HH:MM:SS" et crée un objet datetime :

s = '2021-12-31 12:30:15'
dt = datetime.datetime.strptime(s, '%Y-%m-%d %H:%M:%S')
print(dt)

Il affichera "2021-12-31 12:30:15"

La chaîne de formatage est une chaîne de caractères qui correspond aux différentes parties d'une date et d'une heure, telles que l'année, le mois, le jour, l'heure, la minute et la seconde.

Voici quelques-uns des caractères les plus couramment utilisés dans la chaîne de formatage :

  • %Y : année avec siècle sous forme de nombre décimal. Par exemple, "2022"
  • %m : mois sous forme de nombre décimal à deux chiffres avec padding zéro. Par exemple, "01" pour janvier, "12" pour décembre
  • %d : jour du mois sous forme de nombre décimal à deux chiffres avec padding zéro. Par exemple, "01" pour le premier jour du mois, "31" pour le dernier jour du mois
  • %H : heure (horloge à 24 heures) sous forme de nombre décimal à deux chiffres avec padding zéro. Par exemple, "00" pour minuit, "12" pour midi, "23" pour 23h
  • %M : minute sous forme de nombre décimal à deux chiffres avec padding zéro. Par exemple, "00" pour le début de l'heure, "30" pour midi et demi
  • %S : seconde sous forme de nombre décimal à deux chiffres avec padding zéro. Par exemple, "00" pour le début de la minute, "59" pour la fin de la minute

En plus de ces caractères, la chaîne de formatage peut également inclure des caractères littéraux qui seront comparés à la chaîne d'entrée. Par exemple, la chaîne de formatage suivante correspondra à une date au format "AAAA-MM-JJ" :

fmt = '%Y-%m-%d'

La méthode strptime() utilisera ensuite cette chaîne de formatage pour analyser la chaîne d'entrée et extraire l'année, le mois et le jour de celle-ci.

Il est important de noter que la chaîne de formatage doit correspondre exactement à la chaîne d'entrée, sinon une exception sera levée. Si vous n'êtes pas sûr du format de la chaîne d'entrée, vous pouvez utiliser les instructions try et except pour gérer toute exception potentielle qui pourrait être levée.

De plus, la méthode strptime() n'est pas largement recommandée en raison de certains problèmes tels qu'elle n'est pas thread-safe et qu'elle est lente. Il est recommandé d'utiliser la fonction dateutil.parser.parse(), qui est plus flexible et plus efficace.

Travailler avec les fuseaux horaires

Le module datetime fournit également la bibliothèque pytz qui peut être utilisée pour travailler avec les fuseaux horaires. Pour l'utiliser, vous devrez l'installer d'abord en exécutant pip install pytz dans votre ligne de commande.

Une fois installé, vous pouvez utiliser la fonction pytz.timezone pour créer un objet de fuseau horaire pour un fuseau horaire spécifique, par exemple :

from datetime import datetime
import pytz

dt = datetime.now(pytz.timezone('US/Pacific'))
print(dt)

Cela créera un objet datetime avec la date et l'heure actuelles dans le fuseau horaire du temps pacifique (États-Unis) et l'affichera au format "AAAA-MM-JJ HH:MM:SS-TZ".

Résumé

Dans ce laboratoire, nous avons exploré certaines des classes et fonctions les plus couramment utilisées du module datetime de Python et avons appris comment les utiliser pour effectuer diverses tâches telles que travailler avec des dates, des heures et des timedeltas. Nous avons vu comment créer des objets date, time et datetime en utilisant les constructeurs appropriés et comment les combiner pour représenter des moments spécifiques dans le temps. Nous avons également appris à propos de la classe timedelta, qui peut être utilisée pour représenter des durées de temps, et comment l'utiliser pour effectuer des opérations arithmétiques sur des objets datetime.

En plus des exemples fournis dans ce laboratoire, le module datetime fournit également une pléthore d'autres fonctions et classes pour travailler avec les fuseaux horaires, formater des dates et des heures et analyser des dates et des heures à partir de chaînes de caractères. C'est un module puissant et polyvalent qui peut être utilisé pour résoudre une large variété de problèmes liés au temps en Python.

Dans ce laboratoire, nous avons exploré certaines des fonctionnalités avancées du module datetime de Python, y compris la conversion de format de date et d'heure et la conversion de fuseau horaire. Nous avons appris comment utiliser les méthodes strftime() et strptime() pour formater et analyser des dates et des heures sous forme de chaînes de caractères et comment utiliser la bibliothèque pytz pour travailler avec les fuseaux horaires. Avec ces outils, vous devriez être en mesure de travailler efficacement avec des dates et des heures en Python et de résoudre une large variété de problèmes liés au temps.