我有一个函数,它接收一个字符串,并通过解析器将值转换为日期。
让我们称之为日期转换器:
def date_converter(x):
return dateparser.parse(x).dt.date
因此,如果将"2021年1月21日"作为一个字符串,它将成为2021-01-21
然而,该函数现在需要接收一个部分日期"1月21日",并将其转换为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()