Module datetime de Python
Celui de PythondatetimeLe module est le module de la bibliothèque standard pour la gestion des dates et des heures. Il fournit plusieurs classes et fonctions qui nous aident à gérer facilement des opérations telles que les dates, les heures et les différences horaires. Qu'il s'agisse d'obtenir l'heure actuelle, de formater des dates ou de calculer des différences horaires,datetimeLe module peut gérer tout cela.
Classes principales du module datetime
datetimeLe module contient les classes principales suivantes :
dateclasse -dateLa classe est utilisée pour représenter une date, contenant trois attributs : year, month et day.-
timeclasse -timeLa classe est utilisée pour représenter une heure, contenant des attributs tels que hour, minute, second et microsecond. -
datetimeclasse -datetimeLa classe est unedateettimecombinaison des deux, et peut représenter la date et l'heure simultanément. -
timedeltaclasse -timedeltaLa classe est utilisée pour représenter une différence de temps et peut être utilisée pour les opérations d'addition et de soustraction sur les dates et les heures.
Utilisation du module datetime
Obtenir la date et l'heure actuelles
La méthode de la classedatetimemethodnow()méthode pour obtenir la date et l'heure actuelles.
Exemple
# Obtenir la date et l'heure actuelles
now = datetime.now()
print("Heure actuelle :", now)
Exemple de sortie :
当前时间: 2025-04-22 14:30:45.123456
Créer une date et une heure spécifiques
La méthode de la classedatetimeconstructeur pour créer une date et une heure spécifiques.
Exemple
# Créer une date et une heure spécifiques
specific_time = datetime(2025, 4, 22, 15, 30, 0)
print("Heure spécifique :", specific_time)
Exemple de sortie :
特定时间: 2025-04-22 15:30:00
Formatage de la date et de l'heure
datetimeLes objets peuvent êtrestrftime()formatés en chaîne par la méthode.
Exemple
# Obtenir l'heure actuelle
now = datetime.now()
# Formater la sortie
formatted_time = now.strftime("%Y-%m-%d %H:%M:%S")
print("Heure formatée :", formatted_time)
Exemple de sortie :
格式化时间: 2025-04-22 14:30:45
Calcul des différences de temps
timedeltaLa classe peut être utilisée pour calculer la différence entre deux dates ou heures.
Exemple
# Obtenir l'heure actuelle
now = datetime.now()
# Calculer le moment 10 jours plus tard
future_time = now + timedelta(days=10)
print("Heure après 10 jours :", future_time)
Exemple de sortie :
10 天后的时间: 2025-05-02 14:30:45.123456
Cas d'utilisation courants
Calcul du nombre de jours entre deux dates
Exemple
# Créer deux dates
date1 = date(2025, 4, 22)
date2 = date(2025, 5, 1)
# Calculer la différence en jours
delta = date2 - date1
print("Différence en jours entre les deux dates :", delta.days)
Exemple de sortie :
两个日期之间的天数差: 9
Gestion des fuseaux horaires
datetimeLe module lui-même ne prend pas directement en charge les opérations de fuseau horaire, mais cela peut être géré par lapytzbibliothèque pour gérer les fuseaux horaires.
Exemple
import pytz
# Obtenir l'heure actuelle et définir le fuseau horaire
now = datetime.now(pytz.timezone('Asia/Shanghai'))
print("Heure actuelle à Shanghai :", now)
Exemple de sortie :
上海当前时间: 2025-04-22 14:30:45.123456+08:00
Classes, méthodes et attributs courants
1. Classes principales
| Classe | Description | Exemple |
|---|---|---|
datetime.date |
Classe Date (année, mois, jour) | date(2023, 5, 15) |
datetime.time |
Classe Time (heure, minute, seconde, microseconde) | time(14, 30, 0) |
datetime.datetime |
Classe Datetime (contient la date et l'heure) | datetime(2023, 5, 15, 14, 30) |
datetime.timedelta |
Classe d'intervalle de temps (pour les calculs de date/heure) | timedelta(days=5) |
datetime.tzinfo |
Classe de base des informations de fuseau horaire (nécessite une sous-classe pour implémenter) | Classe de fuseau horaire personnalisée |
2. dateMéthodes/attributs courants de l'objet
| Méthode/Attribut | Description | Exemple |
|---|---|---|
date.today() |
Renvoie la date locale actuelle | date.today() → date(2023, 5, 15) |
date.fromisoformat(str) |
fromYYYY-MM-DDAnalyse une date à partir d'une chaîne |
date.fromisoformat("2023-05-15") |
date.year |
Année (en lecture seule) | d.year → 2023 |
date.month |
Mois (1-12, en lecture seule) | d.month → 5 |
date.day |
Jour (1-31, en lecture seule) | d.day → 15 |
date.weekday() |
Renvoie le jour de la semaine (0=lundi, 6=dimanche) | d.weekday() → 0 |
date.isoformat() |
RenvoieYYYY-MM-DDchaîne de format |
d.isoformat() → "2023-05-15" |
date.strftime(format) |
Sortie formatée personnalisée | d.strftime("%Y/%m/%d") → "2023/05/15" |
3. timeMéthodes/attributs courants de l'objet
| Méthode/Attribut | Description | Exemple |
|---|---|---|
time.hour |
Heure (0-23, en lecture seule) | t.hour → 14 |
time.minute |
Minute (0-59, en lecture seule) | t.minute → 30 |
time.second |
Seconde (0-59, en lecture seule) | t.second → 0 |
time.microsecond |
Microseconde (0-999999, en lecture seule) | t.microsecond → 0 |
time.isoformat() |
RenvoieHH:MM:SS.mmmmmmchaîne de format |
t.isoformat() → "14:30:00" |
time.strftime(format) |
Sortie formatée personnalisée | t.strftime("%H:%M") → "14:30" |
4. datetimeMéthodes/attributs courants de l'objet
| Méthode/Attribut | Description | Exemple |
|---|---|---|
datetime.now() |
Renvoie la date et l'heure locales actuelles | datetime.now() → datetime(2023, 5, 15, 14, 30, 0) |
datetime.utcnow() |
Renvoie la date et l'heure UTC actuelles | datetime.utcnow() |
datetime.fromtimestamp(ts) |
Crée à partir d'un horodatagedatetimeobjet |
datetime.fromtimestamp(1684146600) |
datetime.timestamp() |
Renvoie l'horodatage (secondes en nombre flottant) | dt.timestamp() → 1684146600.0 |
datetime.date() |
Extrait la partie date | dt.date() → date(2023, 5, 15) |
datetime.time() |
Extrait la partie heure | dt.time() → time(14, 30) |
datetime.year |
Année (identique àdate) |
dt.year → 2023 |
datetime.strftime(format) |
Sortie formatée personnalisée | dt.strftime("%Y-%m-%d %H:%M") → "2023-05-15 14:30" |
5. timedeltaAttributs courants de l'objet
| Attribut | Description | Exemple |
|---|---|---|
days |
Jours (peuvent être positifs ou négatifs) | delta.days → 5 |
seconds |
Secondes (0-86399) | delta.seconds → 3600(1 heure) |
microseconds |
Microsecondes (0-999999) | delta.microseconds → 0 |
6. Symboles de formatage courants (strftime)
| Symbole | Description | Exemple de sortie |
|---|---|---|
%Y |
Année à quatre chiffres | 2023 |
%m |
Mois à deux chiffres (01-12) | 05 |
%d |
Jour à deux chiffres (01-31) | 15 |
%H |
Heure au format 24 heures (00-23) | 14 |
%M |
Minute (00-59) | 30 |
%S |
Seconde (00-59) | 00 |
%A |
Nom complet du jour de la semaine | Monday |
%a |
Nom abrégé du jour de la semaine | Mon |
%B |
Nom complet du mois | May |
%b |
Nom abrégé du mois | May |
Exemple
1. Calculer la différence entre les dates
Exemple
d1 = date(2023, 5, 15)
d2 = date(2023, 6, 1)
delta = d2 - d1 # Renvoie un objet timedelta
print(delta.days) # Sortie : 17
2. Addition et soustraction de temps
Exemple
now = datetime.now()
future = now + timedelta(days=3, hours=2)
print(future.strftime("%Y-%m-%d %H:%M"))
3. Conversion de fuseau horaire (nécessite l'installation de pytz)
Exemple
import pytz
utc_time = datetime.utcnow().replace(tzinfo=pytz.utc)
beijing_time = utc_time.astimezone(pytz.timezone("Asia/Shanghai"))
print(beijing_time)
4. Analyse de chaînes
Exemple
dt = datetime.strptime("2023-05-15 14:30", "%Y-%m-%d %H:%M")
print(dt.year) # Sortie : 2023
Notes
Immuabilité: Tous
datetimeles objets sont immuables ; les opérations renvoient de nouveaux objets.Gestion des fuseaux horaires: Native
datetimene prend pas en charge les fuseaux horaires ; utilisezpytzou celle de Python 3.9+zoneinfo。Performance: la création fréquente d'objets peut affecter les performances ; envisagez de réutiliser ou de mettre en cache.
Vérification des limites: les dates invalides (telles que
date(2023, 2, 30)) déclencherontValueError。