Pendulum est une solution de représentation du temps plus complète que le paquet datetime
par défaut. Pour une meilleure intégration avec les projets existant, la classe pendulum
est une sous-classe de datetime
. Cela permet de remplacer naïvement toutes les instances dans le code à l’exception des comparaisons avec type()
telles qu’elles peuvent être effectuées par les librairies sqlite3 ou MySQLdb. D’autres problèmes peuvent être rencontrés avec Django qui utilise isoformat()
. En effet, toute date, dans pendulum, est relative à un fuseau horaire.
Pendulum se vente d’être plus stable que l’alternative la plus populaire, Arrow. En particulier, Arrow est critiquée pour le manque de fiabilité quand à ses méthodes de conversion de texte en date.
En particulier, pendulum supporte :
- L’encodage et la conversion du fuseau horaire (UTC par défaut)
- Les méthodes
now
,today
,yesterday
,tomorrow
, acceptant un paramètre de fuseau horaire - La lecture et l’écriture depuis différents formats (dont l’ISO 8601 et ses dérivés)
- Les décalages (de secondes, heures, jours, semaines,…)
- Les durées/intervalles
- Un format humanisé (par exemple, “il y a une heure”), en plusieurs langues
- Export du timestamp (en secondes depuis le 1 janvier 1970)
- La possibilité d’extension pour des besoins plus précis
Exemple
>>> now = pendulum.now('Europe/Paris') #'2020-02-03T14:38:58.502116+02:00'
>>> tomorrow = now.add(days=1) # obtenir demain
>>> now.in_timezone('UTC') # changer de fuseau horaire
>>> past = pendulum.now().subtract(minutes=2)
>>> past.diff_for_humans()
>>> '2 minutes ago'
>>> lastweek = now.substract(weeks=1)
>>> delta = past - lastweek
>>> delta.in_words(locale='en')
'6 days 23 hours 58 minutes'