如何实现字符串格式datetime与datetime.datetime类型相减求秒级差值
解决方法
你手里的时间字符串是标准ISO 8601格式的UTC时间,根据你使用的Python版本选择对应解析方式即可:
- Python 3.7及以上版本(推荐)
直接调用datetime.fromisoformat方法处理,只要把字符串末尾的Z替换为+00:00就能直接解析:
from datetime import datetime # 你的两个时间变量 str_time = "2021-09-06T07:58:19.032Z" dt_time = datetime(2021, 9, 5, 14, 58, 10, 209675) # 对应你自己的datetime类型变量 # 字符串转datetime对象 parsed_str_time = datetime.fromisoformat(str_time.replace("Z", "+00:00"))
- Python 3.6及更早版本
用strptime方法指定格式串解析:
from datetime import datetime str_time = "2021-09-06T07:58:19.032Z" parsed_str_time = datetime.strptime(str_time, "%Y-%m-%dT%H:%M:%S.%fZ")
计算秒级差值
计算差值前需要注意时区统一:如果你手里的datetime类型变量是不带时区的朴素对象,大部分场景下都转成朴素对象计算即可:
# 去掉解析后时间的时区信息,和原datetime变量也是朴素对象的话就可以直接相减 parsed_str_time = parsed_str_time.replace(tzinfo=None) delta = parsed_str_time - dt_time # 取总秒数,不要直接用delta.seconds,该属性仅返回一天内的秒数,跨天会计算错误 total_seconds = delta.total_seconds() print(total_seconds)
对应你给出的示例时间计算出来的结果为61208.822325。
内容的提问来源于stack exchange,提问作者Shine
相关产品推荐
相关产品推荐

