首页 > 解决方案 > 准确的时间

问题描述

如何从时间戳/日期获取精确的时间

例如:

date = "2021-05-10T12:10:41"

回应是:

1 month 10 days ago

代替

1 month ago

使用timeago包时

注意:我使用了 ISO 时间戳,因为这是来自 API 的响应,如果需要,我可以轻松转换它。

标签: pythontimetimeago

解决方案


您可能想查看dateutil-relativedelta

from datetime import datetime
from dateutil import relativedelta

>>> relativedelta.relativedelta(datetime.now(), datetime.strptime("2021-05-10T12:10:41", "%Y-%m-%dT%H:%M:%S"))
relativedelta(months=+1, days=+19, hours=+1, minutes=+13, seconds=+32, microseconds=+86719)

如果要将上述输出表示为字符串,可以尝试如下自定义函数:

def time_before_now(isodate):
    r = relativedelta.relativedelta(datetime.now(), datetime.strptime(isodate, "%Y-%m-%dT%H:%M:%S"))
    if r.months < 0:
        return f"{r.days} days"
    elif r.months == 1:
        return f"1 month and {r.days} days"
    else:
        return f"{r.months} months and {r.days} days"

>>> time_before_now("2021-05-10T12:10:41")
'1 month and 19 days'

推荐阅读