Parse a datetime/int/float/string and return a datetime.datetime.
This function supports time zone offsets. When the input contains one, the output uses a timezone with a fixed offset from UTC.
Raise ValueError if the input is well formatted but not a valid datetime. Raise ValueError if the input isn't well formatted.