首页 > 解决方案 > 如何确定 dateparser.search.search_dates() 是否返回日期、时间或日期时间

问题描述

试图回答另一个问题时,我偶然发现了以下问题:

dateparser.search.search_dates()返回一个元组列表,每个元组由一个被识别为携带日期和/或时间信息的文本段组成,以及相应的datetime(加上一个可选的语言代码,如果需要)。

如果段是日期类型,则仅设置 的日期字段datetime。其他的取自当前时间,或者取自可以通过settings参数提供的基本日期时间。如果段是时间类型,反之亦然。只有当段同时携带日期和时间信息时,datetime才会设置所有的日期和时间字段。

☞ 我没有办法分辨哪些字段datetime已设置,哪些未设置。☜</p>

我可能会提供一个特定的 base datetime,并检查哪个字段组发生了变化,但是相对日期会从这个 base 偏移,更不用说其他问题了。

我错过了什么?如何区分日期、时间和日期时间?

示例代码:

for s in ("Soccer with @homies at Payne Whitney tomorrow at 2 pm to 4 pm!",
          "Soccer with @homies at Payne Whitney tomorrow starting at 2 pm to 4 pm!"):
    print()
    print(s)
    for part in search_dates(s):
        print(part)

输出:

Soccer with @homies at Payne Whitney tomorrow at 2 pm to 4 pm!
('tomorrow at 2 pm', datetime.datetime(2020, 1, 15, 14, 0))
('4 pm', datetime.datetime(2020, 1, 14, 16, 0))

Soccer with @homies at Payne Whitney tomorrow starting at 2 pm to 4 pm!
('tomorrow', datetime.datetime(2020, 1, 15, 13, 31, 40, 681832))
('at 2 pm', datetime.datetime(2020, 1, 14, 14, 0))
('4 pm', datetime.datetime(2020, 1, 14, 16, 0))

标签: pythonpython-3.xdatetimepython-datetimedateparser

解决方案


推荐阅读