Python 2.7中将ISO 8601格式时间转换为指定字符串格式的方法
Python 2.7 特定ISO时间格式转换方案
Python 2.7 原生的datetime.datetime.strptime()不支持解析带冒号的UTC偏移格式(即你输入时间末尾的-07:00部分),这是转换失败的核心原因,可根据业务需求选择以下两种方案:
方案1:无需处理时区,直接提取目标时间部分
如果不需要对时区做转换,只需要提取原时间字符串里的年月日时分秒信息,直接截断冗余部分即可完成转换:
import datetime input_time = "2021-10-20T09:35:06.615-07:00" # 截断毫秒和时区部分,只保留到秒的时间片段 pure_time_part = input_time.split(".")[0] # 解析时间 dt_obj = datetime.datetime.strptime(pure_time_part, "%Y-%m-%dT%H:%M:%S") # 格式化为目标格式 result = dt_obj.strftime("%m/%d/%Y:%H:%M:%S") print result # 输出结果:10/20/2021:09:35:06
方案2:需要严格处理时区转换
如果需要根据时区偏移做时间校准,使用第三方兼容库python-dateutil完成解析,该库最后一个支持Python2.7的版本为2.8.2,先执行安装:pip install python-dateutil==2.8.2
转换代码如下:
from dateutil import parser input_time = "2021-10-20T09:35:06.615-07:00" # 直接解析带时区的ISO格式时间 dt_obj = parser.isoparse(input_time) # 若需要转换为UTC时间可加 dt_obj = dt_obj.astimezone(pytz.utc) ,需提前安装pytz库 result = dt_obj.strftime("%m/%d/%Y:%H:%M:%S") print result
注意事项
- Python 2.7 已停止官方维护,建议尽快升级到Python 3版本,原生支持带冒号的时区偏移解析,无需额外处理。
- 涉及多时区业务的场景,建议配合
pytz库使用,避免时区计算偏差。
内容的提问来源于stack exchange,提问作者Bruce Banner
相关产品推荐
相关产品推荐

