Python中带时区的Datetime转换为UTC标准格式的方法
将带时区偏移的日期字符串转换为UTC标准格式(Z后缀)
给定变量:
date_1 = "2023-04-14T09:57:40-04:00"
要转换为UTC标准格式(带Z后缀),可以用Python标准库datetime实现,具体如下:
标准时区转换实现
根据ISO 8601时区规则,-04:00代表当地时间比UTC晚4小时,因此UTC时间应为原时间加4小时,正确输出为2023-04-14T13:57:40Z。代码示例:
import datetime date_1 = "2023-04-14T09:57:40-04:00" # 解析带时区的日期字符串 local_dt = datetime.datetime.fromisoformat(date_1) # 转换为UTC时区 utc_dt = local_dt.astimezone(datetime.timezone.utc) # 格式化为目标格式 utc_str = utc_dt.strftime("%Y-%m-%dT%H:%M:%SZ") print(utc_str) # 输出: 2023-04-14T13:57:40Z
代码说明
fromisoformat():Python 3.7+支持的方法,可直接解析包含时区偏移的ISO 8601格式日期字符串。astimezone(datetime.timezone.utc):将带时区的datetime对象转换为UTC时间。strftime("%Y-%m-%dT%H:%M:%SZ"):按照指定格式输出,Z是UTC时区的标准标识。
匹配预期输出的特殊处理
如果确实需要得到你指定的2023-04-14T05:57:40Z(相当于原时间直接减4小时,忽略标准时区逻辑),可以用以下代码:
import datetime date_1 = "2023-04-14T09:57:40-04:00" # 忽略原时区,按UTC时间解析 dt = datetime.datetime.fromisoformat(date_1.replace("-04:00", "+00:00")) # 减去4小时 adjusted_dt = dt - datetime.timedelta(hours=4) # 格式化为目标格式 result = adjusted_dt.strftime("%Y-%m-%dT%H:%M:%SZ") print(result) # 输出: 2023-04-14T05:57:40Z
注意:此方法不符合标准时区转换逻辑,仅适用于特定场景。
内容的提问来源于stack exchange,提问作者pp45
相关产品推荐
相关产品推荐

