date

Date/Time Helpers


Functions

f distance_of_time_in_words(from_time, to_time=0, include_seconds=False) ...

Reports the approximate distance in time between two datetime objects or integers as seconds.

Set include_seconds to True for more more detailed approximations when distance < 1 min, 29 secs

Distances are reported based on the following table:

0 <-> 29 secs => less than a minute 30 secs <-> 1 min, 29 secs => 1 minute 1 min, 30 secs <-> 44 mins, 29 secs => [2..44] minutes 44 mins, 30 secs <-> 89 mins, 29 secs => about 1 hour 89 mins, 29 secs <-> 23 hrs, 59 mins, 29 secs => about [2..24] hours 23 hrs, 59 mins, 29 secs <-> 47 hrs, 59 mins, 29 secs => 1 day 47 hrs, 59 mins, 29 secs <-> 29 days, 23 hrs, 59 mins, 29 secs => [2..29] days 29 days, 23 hrs, 59 mins, 30 secs <-> 59 days, 23 hrs, 59 mins, 29 secs => about 1 month 59 days, 23 hrs, 59 mins, 30 secs <-> 1 yr minus 31 secs => [2..12] months 1 yr minus 30 secs <-> 2 yrs minus 31 secs => about 1 year 2 yrs minus 30 secs <-> max time or date => over [2..X] years

With include_seconds set to True and the difference < 1 minute 29 seconds:

0-4 secs => less than 5 seconds 5-9 secs => less than 10 seconds 10-19 secs => less than 20 seconds 20-39 secs => half a minute 40-59 secs => less than a minute 60-89 secs => 1 minute

Examples:

>>> from datetime import datetime, timedelta
>>> from_time = datetime.now()
>>> distance_of_time_in_words(from_time, from_time + timedelta(minutes=50))
'about 1 hour'
>>> distance_of_time_in_words(from_time, from_time + timedelta(seconds=15))
'less than a minute'
>>> distance_of_time_in_words(from_time, from_time + timedelta(seconds=15), include_seconds=True)
'less than 20 seconds'

Note: distance_of_time_in_words calculates one year as 365.25 days.

f time_ago_in_words(from_time, include_seconds=False) ...

Like distance_of_time_in_words, but where to_time is fixed to datetime.now().

See the source for more information.