如何将带时区的Datetime字符串转换为UTC标准格式?
带时区的日期时间字符串转UTC格式解决方案
你的输入字符串本身就是UTC时区(+00:00),核心需求是调整输出格式,补全毫秒位并将时区标识替换为Z。以下用Python给出两种实用实现方式:
方式一:分场景处理
from datetime import datetime # 输入的日期时间字符串 dt_str1 = '2022-12-07T13:30:14+00:00' dt_str2 = '2022-12-07T13:30:07.697000+00:00' # 处理无毫秒的字符串 dt1 = datetime.fromisoformat(dt_str1) output1 = dt1.strftime('%Y-%m-%dT%H:%M:%S.000Z') print(output1) # 输出:2022-12-07T13:30:14.000Z # 处理带微秒的字符串 dt2 = datetime.fromisoformat(dt_str2) # 截取前三位微秒作为毫秒,拼接Z后缀 output2 = dt2.strftime('%Y-%m-%dT%H:%M:%S.%f')[:-3] + 'Z' print(output2) # 输出:2022-12-07T13:30:07.697Z
方式二:通用函数处理(推荐)
编写一个通用函数,适配所有带时区的ISO格式输入:
from datetime import datetime def convert_to_utc_z(dt_str): dt_obj = datetime.fromisoformat(dt_str) # 将微秒转换为毫秒,不足三位自动补零 millisecond = dt_obj.microsecond // 1000 return f"{dt_obj.strftime('%Y-%m-%dT%H:%M:%S')}.{millisecond:03d}Z" # 测试两个输入 print(convert_to_utc_z('2022-12-07T13:30:14+00:00')) # 2022-12-07T13:30:14.000Z print(convert_to_utc_z('2022-12-07T13:30:07.697000+00:00')) # 2022-12-07T13:30:07.697Z
关键逻辑说明
datetime.fromisoformat()可直接解析带时区的ISO标准字符串,无需手动处理时区偏移;- 输入时区为
+00:00,本身就是UTC时间,无需额外时区转换; - 毫秒通过微秒整除1000得到,
03d格式化确保不足三位时自动补零。
内容的提问来源于stack exchange,提问作者deepu2711
相关产品推荐
相关产品推荐

