def from_iso_datetime(datetimestring, use_dateutil=True):
    """Parse an ISO8601-formatted datetime string and return a datetime object.

    Use dateutil's parser if possible and return a timezone-aware datetime.
    """
    if not _iso8601_datetime_re.match(datetimestring):
        raise ValueError('Not a valid ISO8601-formatted datetime string')
    # Use dateutil's parser if possible
    if dateutil_available and use_dateutil:
        return parser.isoparse(datetimestring)
    else:
        # Strip off timezone info.
        return datetime.datetime.strptime(datetimestring[:19], '%Y-%m-%dT%H:%M:%S')
def from_iso_datetime ( datetimestring , use_dateutil = True ) : if not _iso8601_datetime_re . match ( datetimestring ) : raise ValueError ( 'Not a valid ISO8601-formatted datetime string' ) if dateutil_available and use_dateutil : return parser . isoparse ( datetimestring ) else : return datetime . datetime . strptime ( datetimestring [ : 19 ] , '%Y-%m-%dT%H:%M:%S' )
Parse an ISO8601-formatted datetime string and return a datetime object.

    Use dateutil's parser if possible and return a timezone-aware datetime.