Pendulum is a Python library to make your life easier when it comes down to work with date/time.
Installation
pip install pendulum
A few dependencies will be installed: pytz, tzlocal and python-dateutil. Just the python-dateutil itself is already great – but pendulum offers a few more tweaks.
Usage
import pendulum
now = pendulum.now() # '2016-08-18 20:24:52'
Let’s keep the now
variable for the next examples.
add
now.add(days=1) # '2016-08-19 20:24:52'
Accepts days, months, years, hours, minutes, seconds, microseconds, weeks.
now.add(weeks=1, hours=2) # '2016-08-25 22:24:52'
subtract
now.subtract(weeks=1) # '2016-08-11 20:24:52'
age
birthday = pendulum.create(1988, 10, 22)
birthday.age # 27
diff
now = pendulum.now('Europe/Helsinki')
future = now.add(hours=12)
past = now.subtract(years=50, days=12)
future.diff() # '<Period [11 hours 59 minutes 41 seconds]>'
future.diff_for_humans() # '11 hours from now'
past.diff_for_humans() # '50 years ago'
delta
delta = now - last_week
delta.start # <Pendulum [2016-08-05T00:28:26.207225+03:00]>
delta.end # <Pendulum [2016-08-12T00:28:26.207225+03:00]>
delta.in_days() # 7
delta.in_hours() # 168
delta.in_weekdays() # 6
delta.in_words() # '1 week'
interval
it = pendulum.interval(days=15)
it.weeks # 2
it.days # 15
it.in_hours() # 360
it.in_words() # '2 weeks 1 day'
is_
now.is_birthday()
now.is_future()
now.is_past()
now.is_monday()
now.is_tuesday()
now.is_wednesday()
now.is_thursday()
now.is_friday()
now.is_saturday()
now.is_sunday()
now.is_today()
now.is_yesterday()
now.is_tomorrow()
now.is_leap_year()
now.is_long_year()
now.is_same_day()
now.is_weekday()
now.is_weekend()
now = pendulum.now() # 2016-08-18 20:24:52
next_year = now.add(years=1) # 2017-08-18 20:24:52
now.is_birthday(next_year) # True
now.is_same_day(next_year) # False
class methods
date = datetime.datetime(2016, 1, 1) # datetime.datetime(2016, 1, 1, 0, 0)
pendulum.instance(date) # <Pendulum [2016-01-01T00:00:00+00:00]>
pendulum.now() # <Pendulum [2016-08-18T21:12:27.684083+03:00]>
pendulum.utcnow() # <Pendulum [2016-08-18T21:12:56.711154+00:00]>
pendulum.today() # <Pendulum [2016-08-18T00:00:00+03:00]>
pendulum.tomorrow() # <Pendulum [2016-08-19T00:00:00+03:00]>
pendulum.yesterday() # <Pendulum [2016-08-17T00:00:00+03:00]>
pendulum.create(2017, 6, 1) # <Pendulum [2017-06-01T21:17:11.868599+00:00]>
pendulum.parse('2016-08-18') # <Pendulum [2016-08-18T00:00:00+00:00]>
There is much more to explore. See the official documentation at https://pendulum.eustace.io/.