141 lines
2.9 KiB
ReStructuredText
141 lines
2.9 KiB
ReStructuredText
What are human readable timedeltas? | ago.py
|
|
===============================================
|
|
|
|
ago.py makes customizable human readable timedeltas, for example:
|
|
|
|
Testing past::
|
|
|
|
Russell commented 1 year, 127 days, 16 hours ago
|
|
You replied 1 year, 127 days ago
|
|
|
|
Testing future::
|
|
|
|
Program will shutdown in 2 days, 3 hours, 27 minutes
|
|
Job will run 2 days, 3 hours from now
|
|
|
|
|
|
How to install
|
|
===================
|
|
|
|
There are a number of ways to install this package::
|
|
|
|
easy_install ago
|
|
|
|
pip install ago
|
|
|
|
or specify *ago* under the *setup_requires* list within your
|
|
*setuptools*-compatible project's *setup.py* file.
|
|
|
|
|
|
How to use
|
|
==================
|
|
|
|
The ago module comes with three functions:
|
|
|
|
#. human
|
|
#. delta2human
|
|
#. delta2dict
|
|
|
|
You really only need to worry about *human*.
|
|
|
|
Here are all the available arguments and defaults::
|
|
|
|
human(d, precision=2, format_past='{0} ago', format_future='in {0}'):
|
|
|
|
d
|
|
datetime object to make into human readable, required
|
|
|
|
precision
|
|
control how verbose the output should look, optional
|
|
|
|
format_past
|
|
format string used when d is a past datetime, optional
|
|
|
|
format_future
|
|
format string used when d is a future datetime, optional
|
|
|
|
|
|
Here is an example on how to use *human*::
|
|
|
|
from ago import human, delta2human, delta2dict
|
|
|
|
from datetime import datetime
|
|
from datetime import timedelta
|
|
|
|
# pretend this was stored in database
|
|
db_date = datetime(
|
|
year = 2010,
|
|
month=5,
|
|
day=4,
|
|
hour=6,
|
|
minute=54,
|
|
second=33,
|
|
microsecond=4000
|
|
)
|
|
|
|
# to find out how long ago, use the human function
|
|
print 'Created ' + human( db_date )
|
|
|
|
# optionally pass a precision
|
|
print 'Created ' + human( db_date, 3 )
|
|
print 'Created ' + human( db_date, 6 )
|
|
|
|
We also support future dates and times::
|
|
|
|
PRESENT = datetime.now()
|
|
PAST = present - timedelta( 492, 58711, 45 ) # days, secs, ms
|
|
FUTURE = present + timedelta( 2, 12447, 963 ) # days, secs, ms
|
|
|
|
print human( FUTURE )
|
|
|
|
Now we will document how to use delta2human and delta2dict::
|
|
|
|
# subtract two datetime objects for a timedelta object
|
|
delta = PRESENT - db_date
|
|
|
|
# display a human readable timedelta from a timedelta
|
|
print 'Created ' + delta2human( delta )
|
|
|
|
# create a dictionary out of the timedelta
|
|
print delta2dict( delta )
|
|
|
|
Example format_past and format_future keyword arguments::
|
|
|
|
output1 = human( PAST,
|
|
format_past = 'titanic sunk {0} ago',
|
|
format_future = 'titanic will sink in {0} from now'
|
|
)
|
|
|
|
output2 = human( FUTURE,
|
|
format_past = 'titanic sunk {0} ago',
|
|
format_future = 'titanic will sink in {0} from now'
|
|
)
|
|
|
|
print output1
|
|
# titanic sunk 1 year, 127 days ago
|
|
print output2
|
|
# titanic will sink in 2 days, 3 hours from now
|
|
|
|
|
|
Need more examples?
|
|
==========================
|
|
|
|
You should look at test_ago.py
|
|
|
|
|
|
How do I thank you?
|
|
==========================
|
|
|
|
You should follow me on twitter http://twitter.com/russellbal
|
|
|
|
|
|
License
|
|
=========================
|
|
|
|
Public Domain
|
|
|
|
|
|
Public Revision Control
|
|
==============================
|
|
|
|
https://bitbucket.org/russellballestrini/ago
|