python - Python中的自然/相对天数

标签 python datetime human-readable datetime-parsing humanize

我想要一种在 Python 中显示过时项目的自然时间的方法。类似于 Twitter 显示“片刻前”、“几分钟前”、“两小时前”、“三天前”等消息的方式。

Django 1.0 在 django.contrib 中有一个“humanize”方法。我没有使用 Django 框架,即使我使用了,它也比我想要的更受限制。

请让我(以及 future 的几代搜索者)知道是否已经有一个好的工作解决方案。由于这是一项足够普遍的任务,我想一定有什么。

最佳答案

具体的 Twitter 日期很有趣,因为它们仅在第一天是相对的。 24 小时后,它们只显示月份和日期。一年后,他们开始显示一年的最后两位数字。这是一个示例函数,它的作用更类似于 Twitter 相对日期,尽管它也总是在 24 小时后显示年份。它仅适用于美国语言环境,但您可以随时根据需要进行更改。

# tested in Python 2.7
import datetime
def prettydate(d):
    diff = datetime.datetime.utcnow() - d
    s = diff.seconds
    if diff.days > 7 or diff.days < 0:
        return d.strftime('%d %b %y')
    elif diff.days == 1:
        return '1 day ago'
    elif diff.days > 1:
        return '{} days ago'.format(diff.days)
    elif s <= 1:
        return 'just now'
    elif s < 60:
        return '{} seconds ago'.format(s)
    elif s < 120:
        return '1 minute ago'
    elif s < 3600:
        return '{} minutes ago'.format(s/60)
    elif s < 7200:
        return '1 hour ago'
    else:
        return '{} hours ago'.format(s/3600)

关于python - Python中的自然/相对天数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/410221/

相关文章:

python - 我的 python 代码不会将视频帧保存为图像

python - 来自旧字典的新字典,将特定值与适当的键组合起来

python - 使用参数 'detail' ', '(' {}' 反转 )' and keyword arguments ' 未找到

python - 按月、年对日期列表进行分组

javascript - 如何在 PHP 中将 json 转换为人类可读的格式

python - 如何混合使用旧式和新式 Python 类?

c# - 如何在 C# 中从日期时间获取格式为 yyyy-mm 的字符串

python - 使用 pandas 从 csv 读取日期时间时出错

ruby - 提高大型 attr_accessor 的可读性

objective-c NSFilePosixPermissions 到人类可读的 NSString