Просто перехватите ValueError
и попробуйте снова с расширенным значением.
fmt = '%Y-%m-%dT%H:%M:%SZ'
try:
time = datetime.strptime(data['time'], fmt)
except ValueError:
time = datetime.strptime(data['time'] + "T00:00:00Z", fmt)
В качестве альтернативы, попробуйте ту же строку в формате только для даты, так как результирующее значение уже будет по умолчанию 00:00: 00.
date_and_time = '%Y-%m-%dT%H:%M:%SZ'
date_only = '%Y-%m-%d'
try:
time = datetime.strptime(data['time'], date_and_time)
except ValueError:
time = datetime.strptime(data['time'], date_only)
Второй подход немного легче адаптировать к множеству возможных форматов. Составьте список и перебирайте их, пока не добьетесь успеха.
formats = ['%Y-%m-%dT%H:%M:%SZ', '%Y-%m-%d', ...]
for fmt in formats:
try:
time = datetime.strptime(data['time'], fmt)
break
except ValueError:
pass
else:
# raise ValueError(f'{data["time"]} does not match any expected format')
time = datetime.now() # Or some other completely artificial value