Created
October 6, 2014 12:45
-
-
Save guillaumepiot/edea914f06558581737a to your computer and use it in GitHub Desktop.
Python - Time difference formatting
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from dateutil.relativedelta import relativedelta | |
# Calculate the relative timedelta | |
relative_delta = relativedelta(now_gmt, posted_time_gmt) | |
relative_time_format = { | |
'future' : 'in %s', | |
'past' : '%s ago', | |
's' : 'a few seconds', | |
'm' : 'a minute', | |
'mm' : '%d minutes', | |
'h' : 'an hour', | |
'hh' : '%d hours', | |
'd' : 'a day', | |
'dd' : '%d days', | |
'M' : 'a month', | |
'MM' : '%d months', | |
'y' : 'a year', | |
'yy' : '%d years' | |
} | |
# Get the relative time a string format | |
if relative_delta.years > 0: | |
if relative_delta.years > 1: | |
relative_delta_string = relative_time_format['yy'] % relative_delta.years | |
else: | |
relative_delta_string = relative_time_format['y'] % relative_delta.years | |
elif relative_delta.months > 0: | |
if relative_delta.months > 1: | |
relative_delta_string = relative_time_format['MM'] % relative_delta.months | |
else: | |
relative_delta_string = relative_time_format['M'] % relative_delta.months | |
elif relative_delta.days > 0: | |
if relative_delta.days > 1: | |
relative_delta_string = relative_time_format['dd'] % relative_delta.days | |
else: | |
relative_delta_string = relative_time_format['d'] % relative_delta.days | |
elif relative_delta.hours > 0: | |
if relative_delta.hours > 1: | |
relative_delta_string = relative_time_format['hh'] % relative_delta.hours | |
else: | |
relative_delta_string = relative_time_format['h'] % relative_delta.hours | |
elif relative_delta.minutes > 0: | |
if relative_delta.minutes > 1: | |
relative_delta_string = relative_time_format['mm'] % relative_delta.minutes | |
else: | |
relative_delta_string = relative_time_format['m'] | |
else: | |
relative_delta_string = relative_time_format['s'] | |
# We only support past for now | |
delta_string = relative_time_format['past'] % relative_delta_string | |
return delta_string | |
#################### | |
# The ago library # | |
#################### | |
from ago import human | |
human(now - posted, precision=2) | |
# Precision is for how many levels to drill down | |
# Eg. Precision 1: 2 days ago | |
# Eg. Precision 2: 2 days ago, 20 hours |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment