Skip to content

Instantly share code, notes, and snippets.

@guillaumepiot
Created October 6, 2014 12:45
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save guillaumepiot/edea914f06558581737a to your computer and use it in GitHub Desktop.
Save guillaumepiot/edea914f06558581737a to your computer and use it in GitHub Desktop.
Python - Time difference formatting
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