in alibabacloud_oss_v2/serde.py [0:0]
def deserialize_iso(date_time: str) -> datetime.datetime:
"""Deserialize ISO-8601 formatted string into Datetime object.
"""
if not date_time:
return None
if date_time[-1] == "Z":
delta = 0
timestamp = date_time[:-1]
else:
timestamp = date_time[:-6]
sign, offset = date_time[-6], date_time[-5:]
delta = int(sign + offset[:1]) * 60 + int(sign + offset[-2:])
check_decimal = timestamp.split(".")
if len(check_decimal) > 1:
decimal_str = ""
for digit in check_decimal[1]:
if digit.isdigit():
decimal_str += digit
else:
break
if len(decimal_str) > 6:
timestamp = timestamp.replace(decimal_str, decimal_str[0:6])
if delta == 0:
tzinfo = datetime.timezone.utc
else:
tzinfo = datetime.timezone(datetime.timedelta(minutes=delta))
try:
deserialized = datetime.datetime.strptime(
timestamp, "%Y-%m-%dT%H:%M:%S.%f")
except ValueError:
deserialized = datetime.datetime.strptime(
timestamp, "%Y-%m-%dT%H:%M:%S")
deserialized = deserialized.replace(tzinfo=tzinfo)
return deserialized