Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

User-friendly time format in Python?

Python: I need to show file modification times in the "1 day ago", "two hours ago", format.

Is there something ready to do that? It should be in English.

like image 353
flybywire Avatar asked Oct 11 '09 18:10

flybywire


People also ask

How do you format time in Python?

Python format datetime The way date and time is represented may be different in different places, organizations etc. It's more common to use mm/dd/yyyy in the US, whereas dd/mm/yyyy is more common in the UK. Python has strftime() and strptime() methods to handle this.

Is there a time datatype in Python?

In Python, date and time are not a data type of their own, but a module named datetime can be imported to work with the date as well as time. Python Datetime module comes built into Python, so there is no need to install it externally. Python Datetime module supplies classes to work with date and time.

How do I format a date in YYYY MM DD in Python?

In Python, we can easily format dates and datetime objects with the strftime() function. For example, to format a date as YYYY-MM-DD, pass “%Y-%m-%d” to strftime(). If you want to create a string that is separated by slashes (“/”) instead of dashes (“-“), pass “%Y/%m/%d” to strftime().


1 Answers

The code was originally published on a blog post "Python Pretty Date function" (http://evaisse.com/post/93417709/python-pretty-date-function)

It is reproduced here as the blog account has been suspended and the page is no longer available.

def pretty_date(time=False):     """     Get a datetime object or a int() Epoch timestamp and return a     pretty string like 'an hour ago', 'Yesterday', '3 months ago',     'just now', etc     """     from datetime import datetime     now = datetime.now()     if type(time) is int:         diff = now - datetime.fromtimestamp(time)     elif isinstance(time, datetime):         diff = now - time     elif not time:         diff = 0     second_diff = diff.seconds     day_diff = diff.days      if day_diff < 0:         return ''      if day_diff == 0:         if second_diff < 10:             return "just now"         if second_diff < 60:             return str(second_diff) + " seconds ago"         if second_diff < 120:             return "a minute ago"         if second_diff < 3600:             return str(second_diff // 60) + " minutes ago"         if second_diff < 7200:             return "an hour ago"         if second_diff < 86400:             return str(second_diff // 3600) + " hours ago"     if day_diff == 1:         return "Yesterday"     if day_diff < 7:         return str(day_diff) + " days ago"     if day_diff < 31:         return str(day_diff // 7) + " weeks ago"     if day_diff < 365:         return str(day_diff // 30) + " months ago"     return str(day_diff // 365) + " years ago" 
like image 164
Jed Smith Avatar answered Oct 20 '22 17:10

Jed Smith