来自:“1 小时前”,至:timedelta + 精度

Dav*_*Toy 5 python time datetime humanize

是否有“逆转人性化”时代的功能?

例如,给定(字符串):

  • '1 分钟前'
  • '7 小时前'
  • '5天前'
  • '2个月前'

可以返回(为伪代码道歉):

  • datetime.now() - timedelta(1 分钟),准确度(60 秒)
  • datetime.now() - timedelta(7 小时),准确度(1 小时)
  • datetime.now() - timedelta(5 天),准确性(1 天)
  • datetime.now() - timedelta(2 个月),准确性(1 个月)

mar*_*cog 2

我一直在使用parsedatetime并且它对我来说效果很好。主页列出了它可以处理的一些格式,例如:

  • 5分钟后
  • 5 分钟后
  • 中午前2小时
  • 明天起2天

我发现的主要缺点是它没有时区意识。

如果它有价值,这是我使用的一个包装函数,datetime无论输入字符串是相对的(就像所有示例一样)还是固定的,它总是返回一个对象:

def parse_datetime(datetime_string):
    datetime_parser = parsedatetime.Calendar(parsedatetime_consts.Constants())
    timestamp = datetime_parser.parse(datetime_string)
    if len(timestamp) == 2:
        if timestamp[1] == 0:
            raise ValueError(u'Failed to parse datetime: %s' % datetime_string)
        timestamp = timestamp[0]
    return datetime.fromtimestamp(time.mktime(timestamp))
Run Code Online (Sandbox Code Playgroud)