The arrow project is an attempt to wrap Python’s time and datetime modules into a single API. It also claims to plug gaps in functionality in those modules, such as time spans, ISO-8601 and humanization. You can kind of think of arrow as a drop-in replacement for Python’s datetime and time modules, much like the requests project can be used instead of Python’s urllib. Arrow supports Python 2.6, 2.7 and 3.3 at the time of this writing.
Installing arrow
To get started using arrow, you can just pip to install it:
pip install arrow
Using arrow
The arrow package is quite simple to use. Let’s look at a few common examples:
>>> import arrow >>> arrow.now()>>> now = arrow.now() >>> now.ctime() 'Fri Jul 25 15:41:30 2014' >>> pacific = now.to("US/Pacific") >>> pacific >>> pacific.timestamp 1406320954
Here we get the day’s date and time. Then we store it in a variable and change the time zone to Pacific Standard Time. We can also get the timestamp value, which is seconds since the epoch. Let’s look at a few more examples:
>>> day = arrow.get("2014-07-13") >>> day.format("MM-DD-YYYY") '07-13-2014' >>> day.humanize() u'12 days ago'
Here we choose a date and then reformat how it is displayed. If you call arrow’s humanize() method, it will tell you how many days ago it was. If you were to get what time it is right now via the now() method and then called humanize, you would get a different message back.
Wrapping Up
What I like most about this package is that it does wrap Python’s date and time modules quite well. It’s nice to be able to access each of their functions through one common interface. The author(s) have made date and time manipulation easier to use. I think it’s worth your time to give it a try. Have fun and happy coding!
There also was Delorean (http://delorean.readthedocs.org/en/latest/quickstart.html) which is pretty neat for date/datetime manipulation.
And it has documentation too.
Hi, arrow author here…thanks for your write-up. One correction, arrow has extensive documentation, see http://crsmithdev.com/arrow/, as linked at the top of the GitHub repo (https://github.com/crsmithdev/arrow)
Thanks! Not sure how I missed that!
Just FYI, the github link doesn’t work – seems to have a “)” added to it.
ISO-8601 support is awesome!
Pingback: Faking Data with the Faker Package - Mouse Vs Python