Convertir les jours en secondes et autres conversions de temps en Python

Vous avez un code qui a besoin d’effectuer des conversions temporelles simples, comme des jours en secondes, des heures en minutes, et ainsi de suite.

Pour effectuer des conversions et des calculs arithmétiques impliquant différentes unités de temps, utilisez le module datetime. Par exemple, pour représenter un intervalle de temps, créez une instance timedelta, comme ceci:

>>> from datetime import timedelta
>>> a = timedelta(days=2, hours=6)
>>> b = timedelta(hours=4.5)
>>> c = a + b
>>> c.days
2
>>> c.seconds
37800
>>> c.seconds / 3600
10.5
>>> c.total_seconds() / 3600
58.5
>>>

Si vous avez besoin de représenter des dates et des heures spécifiques, créez des instances datetime et utilisez les opérations mathématiques standard pour les manipuler. Par exemple:

>>> from datetime import datetime
>>> a = datetime(2018, 9, 23)
>>> print(a + timedelta(days=10))
2018-10-03 00:00:00
>>>
>>> b = datetime(2018, 12, 21)
>>> d = b - a
>>> d.days
89
>>> now = datetime.today()
>>> print(now)
2018-12-21 14:54:43.094063
>>> print(now + timedelta(minutes=10))
2018-12-21 15:04:43.094063
>>>

Lorsque vous faites des calculs, il faut noter que la date et l’heure sont des années bissextiles. Par exemple:

>>> a = datetime(2018, 3, 1)
>>> b = datetime(2018, 2, 28)
>>> a - b
datetime.timedelta(2)
>>> (a - b).days
2
>>> c = datetime(2019, 3, 1)
>>> d = datetime(2019, 2, 28)
>>> (c - d).days
1
>>>

Pour la plupart des problèmes de base de manipulation de la date et de l’heure, le module datetime suffit.

Si vous avez besoin d’effectuer des manipulations de date plus complexes, comme le traitement des fuseaux horaires, des plages horaires floues, le calcul des dates de vacances, etc., consultez le module dateutil.

Pour illustrer cela, de nombreux calculs de temps similaires peuvent être effectués avec la méthode dateutil.relativedelta(). Toutefois, une caractéristique notable est qu’il comble certaines lacunes concernant le traitement des mois (et leur nombre différent de jours). Par exemple:

>>> a = datetime(2018, 9, 23)
>>> a + timedelta(months=1)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'months' is an invalid keyword argument for this function
>>>

>>> from dateutil.relativedelta import relativedelta
>>> a + relativedelta(months=+1)
datetime.datetime(2018, 10, 23, 0, 0)
>>> a + relativedelta(months=+4)
datetime.datetime(2019, 1, 23, 0, 0)
>>>

>>> # Temps entre deux dates
>>> b = datetime(2018, 12, 21)
>>> d = b - a
>>> d
datetime.timedelta(89)
>>> d = relativedelta(b, a)
>>> d
relativedelta(months=+2, days=+28)
>>> d.months
2
>>> d.days
28
>>>

LAISSER UN COMMENTAIRE

Please enter your comment!
Please enter your name here