Introduction
Lorsque l'on travaille avec des dates et des heures, il est courant d'avoir besoin de calculer la différence entre deux dates. Dans ce cas, vous voudrez peut-être obtenir le nombre de jours entre deux dates données.
En utilisant le module datetime
Une façon d'obtenir le nombre de jours entre deux dates en Python est d'utiliser le module datetime
.
En utilisant le module datetime, vous avez la possibilité de créer différents objets tels qu'un objet date (basé sur l'année, le mois et le jour) ou un objet datetime (basé sur l'année, le mois, le jour, l'heure et la minute). Avec ces objets, vous pouvez facilement calculer la différence en jours. Il est impératif de faire preuve de prudence lors de la création de ces objets, car la sortie résultante peut être un entier ou un flottant, en fonction du contexte.
En utilisant date objects
Ce module fournit un objet date
qui représente une date et permet d'effectuer divers calculs.
Pour commencer, vous devrez importer le module datetime :
import datetime
Ensuite, créez deux objets de date en utilisant le constructeur datetime.date(). À titre d'illustration, considérons deux instances de date : une représentant le 3 août 2019 et l'autre représentant le 9 août 2019 :
start_date = datetime.date(2019, 8, 3)
end_date = datetime.date(2019, 8, 9)
Maintenant que nous avons nos deux dates, nous pouvons utiliser l'objet timedelta pour calculer la différence entre elles. L'objet timedelta représente une durée et peut être utilisé pour effectuer des opérations arithmétiques sur les dates. Nous pouvons créer un timedelta représentant 6 jours (la différence entre le 9 août et le 3 août) et ensuite utiliser l'attribut days pour obtenir le nombre de jours :
delta = end_date - start_date
print(delta.days)
Cela produira une sortie.
6
, indiquant qu'il y a 6 jours entre les deux dates.
En utilisant datetime objects
Créons maintenant deux objets datetime et explorons comment calculer la durée entre eux en termes de jours. Veuillez noter que c'est légèrement différent de l'exemple précédent. Ce n'est pas seulement une date, mais un datetime qui inclut l'heure et les minutes. Pour cela, nous pouvons utiliser le module datetime de Python. Importons-le :
import datetime
Maintenant, créons nos deux dates en tant qu'objets datetime :
start_date = datetime.datetime(2019, 8, 3, 15, 30)
end_date = datetime.datetime(2019, 8, 9, 20, 42)
Ces deux dates représentent le 3 août 2019 à 15h30 et le 9 août 2019 à 20h42.
Pour trouver le nombre de jours entre ces deux dates, nous pouvons utiliser la syntaxe end_date - start_date. Cela nous donnera un objet datetime qui représente la durée entre start_date et end_date. Pour obtenir uniquement le nombre de jours, nous pouvons utiliser l'attribut .days sur cet objet datetime. Ainsi, dans notre cas, le code serait :
duration = (end_date - start_date).days
Which will give us a duration of 6 days.
Using datetime objects has the advantage of allowing you to obtain a fraction of a day from a timedelta. For example:
duration = (end_date - start_date).total_seconds() / 86400
Output
6.216666666666667
En utilisant le module numpy
Une autre façon d'obtenir le nombre de jours entre deux dates est d'utiliser le module numpy. Ce module fournit un puissant type de données datetime64 qui peut être utilisé pour représenter des dates avec une précision à la nanoseconde.
Soyez prudent lors de la définition de vos tableaux, tout comme dans l'exemple précédent. Faites attention à la façon dont vous les déclarez et les utilisez.
En utilisant datetime64[D]
from numpy import timedelta64
D1 = np.array(['2019-07-23', '2019-08-03', '2019-08-29'], dtype='datetime64[D]')
D2 = np.array(['2019-07-15', '2019-08-22', '2019-08-29'], dtype='datetime64[D]')
DELTA = D2 - D1
Cela produira une sortie.
array([-8, 19, 0], dtype='timedelta64[D]')
En utilisant datetime64
from numpy import timedelta64
D1 = np.array(['2019-07-23T13:30', '2019-08-03T13:30', '2019-08-29T03:30'], dtype='datetime64')
D2 = np.array(['2019-07-15T17:30', '2019-08-22T03:30', '2019-08-29T03:30'], dtype='datetime64')
DELTA = D2 - D1
Veuillez noter que dans ce cas, la différence entre les deux dates est mesurée en minutes.
array([-11280, 26760, 0], dtype='timedelta64[m]')
Si nous souhaitons l'exprimer en termes de jours, nous pouvons suivre l'approche suivante :
DELTA.astype('int') * 1.0 / (24 * 60)
Cela donnera en sortie
array([-7.83333333, 18.58333333, 0. ])
Références
Liens | Site |
---|---|
datetime | docs.python.org |
How to add or subtract a certain number of days from a given date in python ? | moonbooks.org |
How to extract the number of days from a timedelta object in Python ? | moonbooks.org |