Never fall in love with your code. Because it's crap.

Datumsverarbeitung in Python mit Pendulum

Meine Zeiten als hauptberuflicher Java(TM) Programmierer sind jetzt schon seit ein paar Jahren vorbei- meist wechsle ich gerade zwischen Python, C#, PowerShell und Javascript.

Viel vermisse ich nicht, aber Joda Time war so eine Library, die das Arbeiten mit Daten und Kalendern sehr erleichtert hat. Der Entwickler der Joda Time API hat ja dann auch maßgeblich am JSR-310 (neue java.time API) mitgearbeitet.

Auf der Suche nach einer guten Bibliothek zur Datumsverarbeitung für Python bin ich auf Pendulum gestoßen. Pendulum ein noch recht junges Projekt- Version 0.1 erschien im Juli 2016. Allerdings machen sowohl die Bibliothek als auch die Dokumentation einen sehr durchdachten und professionellen Eindruck.

Im Gegensatz zu z.b. Arrow arbeitet Pendulum fast immer mit Subklassen von Python DateTime. Somit muss man nicht mehr konvertieren, will man zum Beispiel das Datum in einem Django DateTime-Feld speichern.

Pendulum installieren

Am einfachsten geht das über pip:

pip install pendulum

Beispiele

import pendulum

# Als erstes holen wir mal aktuelle Uhrzeit und Datum:

now = pendulum.now('Europe/Berlin')

# Wie viel Uhr ist's jetzt in San Francisco?
print(now.in_timezone('US/Pacific'))

Besonders praktisch erweist sich Pendulum beim Rechnen mit Daten:

import pendulum

now = pendulum.now('Europe/Berlin')

# Jetzt setzten wir das Datum mal auf morgen:
tomorrow = now.add(days=1)
print(tomorrow)

# Nächster Montag
next_monday = now.next(pendulum.MONDAY)
print(next_monday)

Auch Differenzen zwischen zwei Daten sind kein Problem :

import pendulum

now = pendulum.now('Europe/Berlin')
next_week = now.add(weeks=1)

# Wieviele Tage liegen zwischen diesen beiden Daten? 
print(now.diff(next_week).in_days())
# 7. Natürlich
import pendulum

pendulum.parse('20. Mai, 2013', locale='de')

Fazit

Pendulum ist zwar noch sehr jung (noch kein Jahr alt), aber es macht einen durchdachten Eindruck. Ich verwende es in Produktion und habe noch kein Problem feststellen können.