Tick-Tock : utilisation de Pendulum pour une gestion facile des dates et des heures en Python

Pendulum pour une gestion facile de la date et de l'heure en Python

mehreen-tick-tock-using-pendulum-for-easy-date-and-time-management-in-python Tick-Tock : utilisation de Pendulum pour une gestion facile des dates et des heures en Python NEWS

Image par auteur | DALLE-3 & Canva

De nos jours, de nombreuses applications sont sensibles au facteur temps et nécessitent donc une gestion efficace des dates et des heures. Python propose de nombreuses bibliothèques pour gérer cette tâche, et l’une des plus efficaces est Pendulum.

Pendulum est une extension de la bibliothèque DateTime avec une interface plus intuitive. Elle offre une API simple, une gestion automatique des fuseaux horaires et des fonctionnalités avancées telles que la localisation, les différences lisibles par l’homme, les périodes et les durées, qui ne sont pas facilement disponibles dans la bibliothèque native DateTime. Elle améliore également l’efficacité et la facilité de gestion des fuseaux horaires et des opérations de date. Prêt à en savoir plus sur Pendulum ? Commençons.

Débuter avec Pendulum

La première étape consiste à installer Pendulum. Ouvrez votre terminal et exécutez la commande suivante :

Ensuite, importez la bibliothèque pour l’utiliser :

Voyons maintenant quelques-unes des fonctions les plus utiles offertes par Pendulum.

Instanciation

Créer un objet DateTime est simple avec Pendulum. Vous pouvez utiliser la fonction pendulum.datetime() pour créer un objet à votre convenance. Voici un exemple simple :

# Create a DateTime object
dt = pendulum.datetime(year=2024, month=7, day=9, hour=12, minute=34, second=56)
print(dt)

Sortie :

2024-07-09 12:34:56+00:00

Vous pouvez également utiliser now() pour obtenir la date et l’heure actuelles dans votre région :

# Get current date and time
now = pendulum.now()
print(now)

Sortie :

2024-07-17 20:07:20.149776+00:00

Méthodes d’assistance

Les méthodes d’assistance (set(), on() et at()) permettent de modifier les attributs d’un objet DateTime existant. Elles créent un nouvel objet avec les changements d’attributs spécifiés au lieu de modifier l’objet d’origine. Un exemple rapide peut nous aider à comprendre ce concept. Commencez par créer un objet DateTime :

dt = pendulum.now()
print(dt)
# Output => 2024-07-17 20:07:20.149776+00:00

Maintenant, utilisons la méthode set() qui vous permet de modifier à la fois la date et l’heure :

change_dt = dt.set(year=2001, month=4, hour=6, minute=7)
print(change_dt)
# Output => 2001-04-17 06:07:20.149776+00:00

Alternativement, vous pouvez utiliser on() pour changer la date et at() pour changer l’heure de l’objet DateTime. La méthode on() a trois arguments obligatoires : « année », « mois » et « jour », tandis que la méthode at() n’a qu’un seul argument de position obligatoire : « heure ».

Voici un exemple rapide pour comprendre ce concept :

# Using on to change the date
change_date = dt.on(year=2021, month=3, day=5)
print("Changed date:", change_date)

# Using at to change the time
change_time = dt.at(hour=5, second=50)
print("Changed time:", change_time)

Sortie :

Changed date: 2021-03-05 20:07:20.149776+00:00
Changed time: 2024-07-17 05:00:50+00:00

Formatage date-heure

Que vous ayez simplement besoin de la date, de l’heure ou d’un formatage personnalisé, Pendulum propose de nombreuses façons de formater la date et l’heure en fonction des besoins de votre tâche. Comprenons ces différents types de formatage à l’aide d’un exemple :

dt = pendulum.now()
print("Date and Time without Formatting:", dt)

# Formatting only the date
formatted_date = dt.to_date_string()
print("Formatted Date:", formatted_date)

# Formatting only the time
formatted_time = dt.to_time_string()
print("Formatted Time:", formatted_time)

# Custom formatting
custom_format = dt.format('dddd, MMMM Do, YYYY, h:mm:ss A')
print("Custom Formatted DateTime:", custom_format)

Sortie :

Date and Time without Formatting: 2024-07-17 20:14:58.721312+00:00
Formatted Date: 2024-07-17
Formatted Time: 20:14:58
Custom Formatted DateTime: Wednesday, July 17th, 2024, 8:14:58 PM

Les fonctions utilisées dans le formatage sont expliquées comme suit :

  • to_date_string() : Formate la date au format AAAA-MM-JJ
  • to_time_string() : Formate l’heure au format 24 heures, c’est-à-dire au format « HH : MM : SS »
  • format(‘dddd, MMMM Do, YYYY, h:mm:ss A’) : Formate la spécification personnalisée de l’objet DateTime comme suit :

    • dddd : Nom complet du jour de la semaine soit mardi dans notre exemple
    • MMMM : Nom complet du mois soit juillet dans notre exemple
    • Do : Jour du mois avec suffixe ordinal soit le 16 dans notre exemple
    • YYYY : Année soit 2024 dans notre exemple
    • h:mm:ss A : format horaire 12 heures avec AM/PM soit 19:13:23 PM dans notre exemple

Localisation

La localisation implique de représenter la date et l’heure en fonction de régions spécifiques et de respecter des conventions culturelles. Cela peut être facilement réalisé soit par le mot-clé locale avec la méthode format ou la méthode set_locale(). Explorons ces deux éléments :

dt = pendulum.now()

# Format to French
dt_french = dt.format('dddd, MMMM Do YYYY, h:mm:ss A', locale="fr")
print('French DateTime:', dt_french)

# Format to Dutch
pendulum.set_locale('nl')
dt_dutch = dt.format('dddd, MMMM Do YYYY, h:mm:ss A')
print('Dutch DateTime:', dt_dutch)

Sortie :

French DateTime: mercredi, juillet 17e 2024, 8:17:02 PM
Dutch DateTime: woensdag, juli 17e 2024, 8:17:02 p.m.

Conversion des fuseaux horaires

Pendulum prend en charge tous les fuseaux horaires répertoriés dans la base de données des fuseaux horaires. Vous pouvez passer très facilement d’un fuseau horaire à l’autre avec une seule commande. Pensez à convertir la date et l’heure actuelles de votre région en date et heure de Londres, au Royaume-Uni. Cela peut être illustré comme suit :

dt = pendulum.now()
print("Date and Time in my region:", dt)

# Convert the regional time to London's time. Follow the format in_timezone(City/Continent)
london_time = dt.in_timezone('Europe/London')
print("Date and Time in London:", london_time)

Sortie :

Date and Time in my region: 2024-07-17 20:26:02.525060+00:00
Date and Time in London: 2024-07-17 21:26:02.525060+01:00

Addition et soustraction

La bibliothèque propose des méthodes add() et subtract() pour calculer les dates et les heures du futur et du passé. Voici un exemple pour votre référence :

# Add 5 days and 2 hours
dt_future = pendulum.now().add(days=5, hours=2)
print("Adding date and time:", dt_future)

# Subtract 2 weeks and 5 minutes
dt_past = pendulum.now().subtract(weeks=2, minutes=5)
print("Subtracting date and time:", dt_past)

Sortie :

Adding date and time: 2024-07-22 22:28:01.070802+00:00
Subtracting date and time: 2024-07-03 20:23:01.071146+00:00

Différence humaine

Vous pouvez afficher le résultat de l’addition et de la soustraction sous la forme d’une différence lisible par l’homme à l’aide de la fonction diff_for_humans(). Explorons cette fonction intéressante à l’aide d’un exemple.

# Create a DateTime object
dt = pendulum.now()

# Subtract 2 months
dt_past = dt.subtract(months=2).diff_for_humans()
print(dt_past)
# Output => 2 months ago

# Add 5 years
dt_future = dt.add(years=5).diff_for_humans()
print(dt_future)
# Output => in 5 years

Vous pouvez supprimer les mots il y a et dans en définissant absolute = True dans la fonction diff_for_humans(). C’est False par défaut. Voici comment procéder :

difference_dt = dt.add(days=2).diff_for_humans(absolute=True)
print(difference_dt)
# Output => 2 days

Conclusion

Pour conclure, Pendulum est une bibliothèque utile pour la gestion des dates et des heures. Elle apporte de nombreuses améliorations à la bibliothèque native DateTime de Python et résout bon nombre de ses complexités. L’une des meilleures caractéristiques de Pendulum est sa flexibilité et sa gestion efficace des fuseaux horaires. Vous pouvez explorer plus de fonctionnalités en visitant la documentation de Pendulum.

Kanwal Mehreen Kanwal est une ingénieure en apprentissage automatique et une rédactrice technique passionnée par la science des données et l’intersection de l’IA et de la médecine. Elle a co-écrit l’ebook « Maximiser la productivité avec ChatGPT ». En tant que Google Generation Scholar 2022 pour l’APAC, elle défend la diversité et l’excellence académique. Elle est également reconnue comme boursière Teradata Diversity in Tech, boursière Mitacs Globalink Research et boursière Harvard WeCode. Kanwal est une ardente défenseure du changement, ayant fondé FEMCodes pour autonomiser les femmes dans les domaines STEM.

Source