Python中如何将ISO 8601/Zulu时间字符串转datetime并计算时间差
处理ISO 8601时间字符串:转换为datetime并计算时间差
首先明确:你拿到的这个时间字符串"2022-07-12T05:09:39.057266+00:00"属于ISO 8601标准格式。Zulu时间是ISO 8601里用Z替代+00:00来表示UTC时区的写法,本质和你这个格式是同一标准下的不同表现形式。
下面以Python为例,给出具体实现步骤:
一、将字符串转换为datetime对象
1. Python 3.7+ 原生支持
直接用标准库datetime的fromisoformat()方法,无需额外依赖,完美解析带时区偏移的ISO 8601字符串:
from datetime import datetime time_str = "2022-07-12T05:09:39.057266+00:00" dt_obj = datetime.fromisoformat(time_str) print(dt_obj) # 输出:2022-07-12 05:09:39.057266+00:00
2. 兼容Python 3.6及更早版本
如果你的Python版本较低,可以使用python-dateutil库(先通过pip install python-dateutil安装):
from dateutil import parser time_str = "2022-07-12T05:09:39.057266+00:00" dt_obj = parser.isoparse(time_str) print(dt_obj)
二、计算与当前时间的差值
注意要保证时区统一,推荐用UTC时间计算,避免本地时区带来的偏差:
from datetime import datetime, timezone # 转换目标时间 target_dt = datetime.fromisoformat("2022-07-12T05:09:39.057266+00:00") # 获取当前UTC时间 current_utc_dt = datetime.now(timezone.utc) # 计算时间差,得到timedelta对象 time_diff = current_utc_dt - target_dt # 直接打印友好格式 print(f"时间差:{time_diff}") # 提取具体时间单位 print(f"相差天数:{time_diff.days}") print(f"当天内相差秒数:{time_diff.seconds}") print(f"相差微秒数:{time_diff.microseconds}")
得到的time_diff是timedelta类型,你可以直接用它做后续的时间计算,比如给某个时间加上这个差值。
内容的提问来源于stack exchange,提问作者Aditya Malviya
相关产品推荐
相关产品推荐

