月日だけの"2月29日"の文字列からdatetimeに変換すると1900-02-29になり うるう年ではないためエラーが発生
直近のうるう年まで進める
import calendar import datetime import re s = "2月29日" today = datetime.date.today() try: dt = datetime.datetime.strptime(s, "%m月%d日") dt = dt.replace(year=today.year).date() except: year = today.year while not calendar.isleap(year): year += 1 m = re.match(r"(\d{1,2})月(\d{1,2})日", s) month, day = map(int, m.groups()) dt = datetime.date(year, month, day) print(dt)