将没有年份的日期/时间转换为今年



我的输入看起来像"8-15 14:45"并试图将其转换为datetime对象(然后将其转换回字符串)。我的问题是,它将年份设置为1900年,但我需要将年份设置为今年。我该如何做到这一点?

到目前为止,我有datetime.datetime.strptime('8-15 14:45', '%m-%d %H:%M')得到datetime.datetime(1900, 8, 15, 14, 45),但我需要datetime.datetime(2021, 8, 15, 14, 45)。如果可以的话,我不想硬编码2021。

抱歉,如果这是回答某处,我的google-fu失败了。

使用datetime.replace与datetime.today().year:

this_year = dt.datetime.today().year
dt.datetime.strptime('8-15 14:45', '%m-%d %H:%M').replace(year=this_year)

您可以使用datetime类的now()方法,并且只要求返回的datetime对象的属性年份:

from datetime import datetime
t = datetime.now().year
print(t)
>>> 2021

可以这样替换已解析日期中的年份:

from datetime import datetime as dt
date = dt.strptime('8-15 14:45', '%m-%d %H:%M')
date = date.replace(year=dt.now().year)

最新更新