python – 来自:“1小时前”,To:timedelta准确性

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

例如,给定(字符串):

>’1分钟前’
>’7小时前’
>’5天前’
>’2个月前’

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

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

最佳答案 我一直在使用
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))
点赞