Natural/Relative days in Python

前端 未结 6 1169
南旧
南旧 2020-11-30 03:44

I\'d like a way to show natural times for dated items in Python. Similar to how Twitter will show a message from \"a moment ago\", \"a few minutes ago\", \"two hours ago\",

6条回答
  •  渐次进展
    2020-11-30 04:16

    There is the humanize package:

    >>> import humanize
    >>> import datetime
    >>> humanize.naturalday(datetime.datetime.now())
    'today'
    >>> humanize.naturalday(datetime.datetime.now() - datetime.timedelta(days=1))
    'yesterday'
    >>> humanize.naturalday(datetime.date(2007, 6, 5))
    'Jun 05'
    >>> humanize.naturaldate(datetime.date(2007, 6, 5))
    'Jun 05 2007'
    >>> humanize.naturaltime(datetime.datetime.now() - datetime.timedelta(seconds=1))
    'a second ago'
    >>> humanize.naturaltime(datetime.datetime.now() - datetime.timedelta(seconds=3600))
    'an hour ago'
    

    Examples for your use case:

    >>> humanize.naturaltime(datetime.datetime.now() - datetime.timedelta(seconds=36000))
    '10 hours ago'
    >>> humanize.naturaltime(datetime.datetime.now() - datetime.timedelta(seconds=360000))
    '4 days ago'
    >>> humanize.naturaltime(datetime.datetime.now() - datetime.timedelta(seconds=3600000))
    'a month ago'
    

    Further (see link above) it also supports humanization of:

    • integers
    • file sizes
    • floats (to fractional numbers)

提交回复
热议问题