Skip to main content

Convert a future date to a human-friendly english format

Project description

HumanFuture

Python utility to write future dates in a human-friendly way.

The module was motivated by a need to represent future events in a friendly, but not fuzzy way for the tweet-scheduling tool, [antictweet](http://anticitweet.com). Friendly language without sacrificing precision is what makes HumanFuture different.

The module is currently hard-coded in 12-hour english, with a precision of one minute.

Installing

This packages is on PyPi, so assuming you have setup tools installed, it’s just a matter of doing

pip install humanfuture

Examples

>>> import humanfuture as future
>>> from datetime import datetime
>>> ref = datetime(2012, 8, 6, 9, 0)
>>> future.humanize(datetime(2012, 8, 6, 9, 1), ref)
'about a minute'
>>> future.humanize(datetime(2012, 8, 6, 9, 5), ref)
'five minutes'
>>> future.humanize(datetime(2012, 8, 6, 10, 30), ref)
'one hour and 30 minutes'
>>> future.humanize(datetime(2012, 8, 6, 12, 0), ref)
'noon'
>>> future.humanize(datetime(2012, 8, 7, 12, 0), ref)
'tomorrow at noon'
>>> future.humanize(datetime(2012, 8, 7, 18, 0), ref)
'tomorrow at 6 pm'
>>> future.humanize(datetime(2012, 8, 9, 14, 30), ref)
'Thursday at 2:30 pm'
>>> future.humanize(datetime(2012, 8, 13, 9, 15), ref)
'next Monday at 9:15 am'
>>> future.humanize(datetime(2012, 10, 13, 12, 0), ref)
'October 13 at noon'
>>> future.humanize(datetime(2013, 4, 13, 23, 11), ref)
'April 13, 2013 at 11:11 pm'

For a more complete – though, also uglier – reference of what this module outputs, see test_humanfuture.py in tests.

Humanizing Your Future

The humanize function in humanfuture is the one you want. Just pass in a datetime object for sometime in the future and it should spit out a nice english string.

If you need to get out relative futures from some time other than now, you can pass in a reference datetime as the second arguement.

Dealing with Your Past

Two exceptions could be thrown by this module, a humanfuture.NegativeDeltaError, or a humanfuture.UnformattableError. The second one should never actually occur. Please let me know if you ever come across it. But the first one you need to watch out for.

This module’s scope is restricted to future times, so it throws that humanfuture.NegativeDeltaError if you give it a futures past. To avoid this, either check your futures before submitting, or if you’re unsure, put the conversion in a try/catch block and deal with it there.

Credits

Although this is a completely new module, some inspiration was taken from the lovely [humanize](https://github.com/jmoiron/humanize) module.

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

HumanFuture-0.2.tar.gz (3.3 kB view details)

Uploaded Source

File details

Details for the file HumanFuture-0.2.tar.gz.

File metadata

  • Download URL: HumanFuture-0.2.tar.gz
  • Upload date:
  • Size: 3.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for HumanFuture-0.2.tar.gz
Algorithm Hash digest
SHA256 9396c52dd367029d2f0b7a4254f9f5ee8ba3139f0293fc60ad5104af1271f555
MD5 da1440e9a54fe3aefcf6cd8fd7ebc92c
BLAKE2b-256 745e104e069369c489d9282a89af8038d245120aa00be38f3484f97d4304e46b

See more details on using hashes here.

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