Skip to main content

Better dates and times for Python

Project description

https://travis-ci.org/crsmithdev/arrow.png

Documentation: crsmithdev.com/arrow.

Arrow is a Python library that provides a sensible, intelligent way of creating, manipulating, formatting and converting dates and times. Arrow is simple, lightweight and heavily inspired by moment.js and requests.

Why?

Python’s standard library and some other low-level modules offer complete functionality but don’t work very well from a usability perspective:

  • Too many modules: datetime, time, calendar, dateutil, pytz

  • Time zones and timestamp conversions are verbose and error-prone

  • Time zones are explicit, naivete is the norm

  • Gaps in functionality: ISO-8601 parsing, timespans, humanization

Features

  • Implements the datetime interface

  • Supports Python 2.6, 2.7 and 3.3

  • TZ-aware & UTC by default

  • Concise, intelligent interface for creation

  • Easily replace and shift attributes

  • Rich parsing & formatting options

  • Timezone conversion

  • Simple timestamp handling

  • Time spans, ranges, floors and ceilings

  • Humanization, with support for a growing number of locales

  • Extensible factory architecture supporting custom Arrow-derived types

Get started

$ pip install arrow
>>> import arrow
>>> utc = arrow.utcnow()
>>> utc
<Arrow [2013-05-11T21:23:58.970460+00:00]>

>>> utc = utc.replace(hours=-1)
>>> utc
<Arrow [2013-05-11T20:23:58.970460+00:00]>

>>> local = utc.to('US/Pacific')
>>> local
<Arrow [2013-05-11T13:23:58.970460-07:00]>

>>> local.timestamp
1368303838

>>> local.format('YYYY-MM-DD HH:mm:ss ZZ')
'2013-05-11 13:23:58 -07:00'

>>> local.humanize()
'an hour ago'

>>> local.humanize(locale='ko_kr')
'1시간 전'

Documentation

Documentation is available at crsmithdev.com/arrow.

History

  • 0.3.3

    • Python 2.6 and 3.3 fully supported, including tests

    • Initial support for locale-based parsing and formatting

    • ArrowFactory class, now proxied as the module API

    • arrow.factory() method to obtain a factory for a custom type

  • 0.3.2

    • Python 3.0 support / fixes

  • 0.3.1

    • Fix for incorrect timestamp handling in old arrow function (for old API compatibility)

  • 0.3.0

    • Arrow objects are no longer mutable

    • Arrow.replace method

    • Plural attribute name semantics altered: single -> absolute, plural -> relative

    • Plural names no longer supported as properties (e.g. arrow.utcnow().years)

    • Limit parameters are respected in range and span_range

    • Accept timestamps, datetimes and Arrows for datetime inputs, where reasonable

  • 0.2.1

    • Support for localized humanization

    • English, Russian, Greek, Korean, Chinese locales

  • 0.2.0

    • Rewrite, re-implemented as datetime replacement

    • Added date parsing

    • Added date formatting

    • Added floor, ceil and span methods

    • Added datetime methods for drop-in replacement

    • Added clone method

    • Added get, now and utcnow API methods

  • 0.1.6

    • Added humanized time deltas

    • Fixed numerous issues with conversions related to daylight savings time

    • Fixed some inconsistencies in time zone names

    • __str__ uses ISO formatting

    • __eq__ implemented for basic comparison between Arrow objects

  • 0.1.5

    • Started tracking changes

    • Added parsing of ISO-formatted time zone offsets (e.g. ‘+02:30’, ‘-05:00’)

    • Fixed some incorrect timestamps with delta / olson time zones

    • Fixed formatting of UTC offsets in TimeStamp’s str method

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

arrow-0.3.3.tar.gz (14.7 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page