What do I need to do to get the following responses for the different input strings?
date_str = "2020-01-01"
date_obj = datetime.fromisoformat(date_str)
# Output for date_obj: 2023-01-01
date_str = "2020-01-01T20"
date_obj = datetime.fromisoformat(date_str)
# Output for date_obj: 2023-01-01 20:00:00
date_str = "2020-01-01T00:00:00"
date_obj = datetime.fromisoformat(date_str)
# Output for date_obj: 2023-01-01 00:00:00
At the moment, I always get the time included in the DateTime object. When no time is set, then it will include 00:00:00.
using a try/except:
from datetime import datetime, date
for date_str in "2020-01-01", "2020-01-01T20", "2020-01-01T00:00:00":
try:
print("date -> ", date.fromisoformat(date_str))
except ValueError:
print("datetime --> ", datetime.fromisoformat(date_str))
# date -> 2020-01-01
# datetime --> 2020-01-01 20:00:00
# datetime --> 2020-01-01 00:00:00
or a check for the date/time separator:
for date_str in "2020-01-01", "2020-01-01T20", "2020-01-01T00:00:00":
if "T" in date_str or " " in date_str:
print("datetime --> ", datetime.fromisoformat(date_str))
else:
print("date --> ", date.fromisoformat(date_str))
# date --> 2020-01-01
# datetime --> 2020-01-01 20:00:00
# datetime --> 2020-01-01 00:00:00