首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Python中将日期转换为人类可读的格式(明天,2天前)

在Python中将日期转换为人类可读的格式(明天,2天前)
EN

Stack Overflow用户
提问于 2021-09-18 18:21:00
回答 1查看 176关注 0票数 0

我正在尝试将python日期转换为人类可读的格式,如“明天”、"2天前“、”一周内“等。

我可以像下面这样写一些代码片段,但是有没有可以使用的python包呢?我发现dateperser包可以解析人类可读的格式to date对象,但不是以另一种方式。

谢谢。

代码语言:javascript
复制
from datetime import date, timedelta

today = date.today()

for d in range(-10, 10, 1):
    next = today + timedelta(days=d)
    diff = (next - today).days

    if diff == 0:
        s = "Today"
    elif diff == -1:
        s = "Yesterday"
    elif diff == 1:
        s = "Tomorrow"
    elif diff == 2:
        s = "Day after Tomorrow"
    elif abs(diff) < 4:
        s = f"{abs(diff)} days ago" if diff < 0 else f"In {abs(diff)} days"
    elif abs(diff) <= 7:
        str = "Last" if diff < 0 else "Next"
        day = next.strftime("%A")
        s = f"{str} {day}"
    else:
        day = next.strftime("%d-%m-%Y")
        s = f"On {day}"

    print(f"{next} ({d}): {s}")

输出:

代码语言:javascript
复制
2021-09-09 (-10): On 09-09-2021
2021-09-10 (-9): On 10-09-2021
2021-09-11 (-8): On 11-09-2021
2021-09-12 (-7): Last Sunday
2021-09-13 (-6): Last Monday
2021-09-14 (-5): Last Tuesday
2021-09-15 (-4): Last Wednesday
2021-09-16 (-3): 3 days ago
2021-09-17 (-2): 2 days ago
2021-09-18 (-1): Yesterday
2021-09-19 (0): Today
2021-09-20 (1): Tomorrow
2021-09-21 (2): Day after Tomorrow
2021-09-22 (3): In 3 days
2021-09-23 (4): Next Thursday
2021-09-24 (5): Next Friday
2021-09-25 (6): Next Saturday
2021-09-26 (7): Next Sunday
2021-09-27 (8): On 27-09-2021
2021-09-28 (9): On 28-09-2021
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-18 18:31:32

可以,您可以使用humanize,它有不同的Date & time humanization API集

代码语言:javascript
复制
>>> import humanize
>>> import datetime as dt
>>> humanize.naturalday(dt.datetime.now())
'today'
>>> humanize.naturaldelta(dt.timedelta(seconds=1001))
'16 minutes'
>>> humanize.naturalday(dt.datetime.now() - dt.timedelta(days=1))
'yesterday'
>>> humanize.naturaltime(dt.datetime.now() - dt.timedelta(seconds=1))
'a second ago'

您还可以使用precisedelta API来更准确地表示您的增量。

代码语言:javascript
复制
>>> import humanize
>>> import datetime as dt
>>> delta = dt.timedelta(seconds=3633, days=2, microseconds=123000)
>>> humanize.precisedelta(delta)
'2 days, 1 hour and 33.12 seconds'
>>> humanize.precisedelta(delta, minimum_unit="microseconds")
'2 days, 1 hour, 33 seconds and 123 milliseconds'
>>> humanize.precisedelta(delta, suppress=["days"], format="%0.4f")
'49 hours and 33.1230 seconds'

API参考文档可以在here中找到。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69237349

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档