Python:我需要以"1天前“,”2小时前“的格式显示文件修改时间。
有什么东西准备好这么做了吗?它应该是英文的。
发布于 2009-10-12 02:32:06
该代码最初发布在博客文章"Python Pretty Date function“(http://evaisse.com/post/93417709/python-pretty-date-function)上。
它在这里被复制,因为博客帐户已被暂停,该页面不再可用。
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 = now - now
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"
发布于 2012-04-02 08:49:47
如果您碰巧使用的是Django,那么版本1.4中的新特性是naturaltime
模板过滤器。
要使用它,首先在settings.py中将'django.contrib.humanize'
添加到您的INSTALLED_APPS
设置中,然后将{% load humanize %}
添加到正在使用过滤器的模板中。
然后,在您的模板中,如果您有一个datetime变量my_date
,您可以使用{{ my_date|naturaltime }}
打印它与当前的距离,它将呈现为类似4 minutes ago
的形式。
Other new things in Django 1.4.
Documentation for naturaltime
and other filters in the django.contrib.humanize
set.
发布于 2010-04-10 10:03:36
在寻找与处理未来日期的额外需求相同的东西时,我发现了这个:http://pypi.python.org/pypi/py-pretty/1
示例代码(来自网站):
from datetime import datetime, timedelta
now = datetime.now()
hrago = now - timedelta(hours=1)
yesterday = now - timedelta(days=1)
tomorrow = now + timedelta(days=1)
dayafter = now + timedelta(days=2)
import pretty
print pretty.date(now) # 'now'
print pretty.date(hrago) # 'an hour ago'
print pretty.date(hrago, short=True) # '1h ago'
print pretty.date(hrago, asdays=True) # 'today'
print pretty.date(yesterday, short=True) # 'yest'
print pretty.date(tomorrow) # 'tomorrow'
https://stackoverflow.com/questions/1551382
复制相似问题