Python 部分日期解析器函数

Python Partial Date Parser Function

我有一个接受字符串并通过解析器将值转换为日期的函数。

我们称之为日期转换器:

def date_converter(x):
    return dateparser.parse(x).dt.date

因此,如果将“2021 年 1 月 21 日”作为字符串,它将变为 2021-01-21

但是,该函数现在需要接收部分日期“21jan”并将其转换为 2021-01(无论日期是什么)。日子无所谓。

我如何设置一个解析器来知道它将接收一年零一个月,假设它接收的只是一个字符串?

以下是我认为您正在寻找的内容:

s = "21jan"
import datetime
d = datetime.datetime.strptime(s, "%y%b").date()
print(d)

输出:

2021-01-01

此解决方案使用非常灵活和宽容的 datetime.parser 模块。这很慢,但非常有用。

import datetime
from dateutil import parser



def date_convertor(x:str)->datetime.date:
    #assuming the day of the month is never present
    date_string_to_parse = x + "01"
    converted_dt = parser.parse(date_string_to_parse,yearfirst=True)
    return converted_dt.date()