Soustraire Datetime en Python
Ce tutoriel présente la façon d’effectuer la soustraction de la date et de l’heure en Python.
Nous explorerons les différentes sorties après soustraction, comme la sortie du nombre de secondes, minutes, heures ou années de la différence entre les deux objets datetime
fournis.
Utiliser le module datetime
pour soustraire datetime
en Python
datetime
est un module en Python qui supportera les fonctions qui manipulent l’objet datetime
.
L’initialisation d’un objet datetime
nécessite trois paramètres obligatoires comme datetime.datetime(year, month, day)
. Il accepte également des paramètres optionnels sous la forme d’heures, de minutes, de secondes, de microsecondes et de fuseau horaire.
L’objet datetime
a également la fonction now()
, qui initialise la date et l’heure actuelles dans l’objet.
En soustrayant deux objets date-heure, on obtient la différence entre le nombre de jours et la différence d’heure, s’il y en a une.
from datetime import datetime
then = datetime(1987, 12, 30, 17, 50, 14) # yr, mo, day, hr, min, sec
now = datetime(2020, 12, 25, 23, 13, 0)
print(now - then)
Production :
12055 days, 5:10:00
Le résultat signifie que les deux dates sont distantes de 12055 jours et 5 heures et 10 minutes.
Pour convertir ce résultat en différents formats, il faudrait d’abord convertir le timedelta
en secondes. L’objet date-heure a une méthode intégrée datetime.total_seconds()
qui convertit l’objet en secondes totales qu’il contient.
Voici le code source complet de la soustraction datetime
en utilisant le module datetime
et ses fonctions.
from datetime import datetime
def getDifference(then, now=datetime.now(), interval="secs"):
duration = now - then
duration_in_s = duration.total_seconds()
# Date and Time constants
yr_ct = 365 * 24 * 60 * 60 # 31536000
day_ct = 24 * 60 * 60 # 86400
hour_ct = 60 * 60 # 3600
minute_ct = 60
def yrs():
return divmod(duration_in_s, yr_ct)[0]
def days():
return divmod(duration_in_s, day_ct)[0]
def hrs():
return divmod(duration_in_s, hour_ct)[0]
def mins():
return divmod(duration_in_s, minute_ct)[0]
def secs():
return duration_in_s
return {
"yrs": int(yrs()),
"days": int(days()),
"hrs": int(hrs()),
"mins": int(mins()),
"secs": int(secs()),
}[interval]
then = datetime(1987, 12, 30, 17, 50, 14) # yr, mo, day, hr, min, sec
now = datetime(2020, 12, 25, 23, 13, 0)
print("The difference in seconds:", getDifference(then, now, "secs"))
print("The difference in minutes:", getDifference(then, now, "mins"))
print("The difference in hours:", getDifference(then, now, "hrs"))
print("The difference in days:", getDifference(then, now, "days"))
print("The difference in years:", getDifference(then, now, "yrs"))
La première chose que fait le code est d’initialiser 2 dates séparées pour la soustraction et d’appeler la fonction plusieurs fois avec des sorties différentes à chaque fois. Dans le cas de all
, il retournera une sortie qui obtiendra la différence basée sur tous les cas, des années aux secondes.
La fonction divmod()
accepte deux nombres comme dividende et diviseur et retourne un tuple du quotient et le reste entre eux. Seul le quotient est nécessaire, et c’est pourquoi seul l’indice 0
est utilisé dans le code.
Production :
The difference in seconds: 1041052966
The difference in minutes: 17350882
The difference in hours: 289181
The difference in days: 12049
The difference in years: 33
Nous avons maintenant la différence entre deux objets date-heure dans plusieurs périodes différentes.
Skilled in Python, Java, Spring Boot, AngularJS, and Agile Methodologies. Strong engineering professional with a passion for development and always seeking opportunities for personal and career growth. A Technical Writer writing about comprehensive how-to articles, environment set-ups, and technical walkthroughs. Specializes in writing Python, Java, Spring, and SQL articles.
LinkedInArticle connexe - Python DateTime
- Comment convertir la colonne DataFrame en date-heure dans Pandas
- Comment obtenir l'heure actuelle en Python
- Obtenez le jour de la semaine en Python
- Comment convertir une chaîne de caractères en datetime en Python
- Obtenir la liste des fuseaux horaires à l'aide de Python
- Obtenir l'année à partir d'un objet Datetime en Python