Datetimes for Humans.
Datetimes are very frustrating to work with in Python, especially when dealing with different locales on different systems. This library exists to make the simple things much easier, while admitting that time is an illusion (timezones doubly so).
Datetimes should be interacted with via an API written for humans.
Maya is mostly built around the headaches and use-cases around parsing datetime data from websites.
Behold, datetimes for humans!
>>> now = maya.now() <MayaDT epoch=1481850660.9> >>> tomorrow = maya.when('tomorrow') <MayaDT epoch=1481919067.23> >>> tomorrow.slang_date() 'tomorrow' >>> tomorrow.slang_time() '23 hours from now' >>> tomorrow.iso8601() '2016-12-16T15:11:30.263350Z' >>> tomorrow.rfc2822() 'Fri, 16 Dec 2016 20:11:30 -0000' >>> tomorrow.datetime() datetime.datetime(2016, 12, 16, 15, 11, 30, 263350, tzinfo=<UTC>) # Automatically parse datetime strings and generate naive datetimes. >>> scraped = '2016-12-16 18:23:45.423992+00:00' >>> maya.parse(scraped).datetime(to_timezone='US/Eastern', naive=True) datetime.datetime(2016, 12, 16, 13, 23, 45, 423992) >>> rand_day = maya.when('2011-02-07', timezone='US/Eastern') <MayaDT epoch=1297036800.0> # Note how this is the 6th, not the 7th. >>> rand_day.day 6 # Always. >>> rand_day.timezone UTC
Arrow, for example, is a fantastic library, but isn’t what I wanted in a datetime library. In many ways, it’s better than Maya for certain things. In some ways, in my opinion, it’s not.
I simply desire a sane API for datetimes that made sense to me for all the things I’d ever want to do—especially when dealing with timezone algebra. Arrow doesn’t do all of the things I need (but it does a lot more!). Maya does do exactly what I need.
I think these projects complement each-other, personally. Maya is great for parsing websites. For example- Arrow supports floors and ceilings and spans of dates, which Maya does not at all.
Installation is easy, with pip:
$ pip install maya