You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将UTC ISO 8601格式字符串转为秒数?Python datetime库使用问题

解决方案:将ISO 8601时间字符串转换为秒数

核心说明

你之前误用了datetime.timezone.fromutc()——这个函数是用来把无时区信息的datetime对象转换为指定时区的时间,并非用于解析ISO格式字符串。正确流程是先把字符串解析为带时区的datetime对象,再转成Unix时间戳(秒数)。


方法1:Python 3.7+ 原生实现(推荐)

datetime.fromisoformat()是Python 3.7新增的方法,可直接解析带时区的ISO 8601字符串,无需额外依赖:

from datetime import datetime

# 示例时间字符串
time_str = "2022-11-05T22:36:48.701614+01:00"

# 解析为带时区的datetime对象
dt = datetime.fromisoformat(time_str)

# 转换为Unix时间戳(从1970-01-01 UTC到该时间的总秒数,含微秒小数)
timestamp = dt.timestamp()
print(timestamp)  # 输出类似 1667686608.701614

# 若需整数秒,直接取整
integer_seconds = int(timestamp)
print(integer_seconds)  # 输出 1667686608

方法2:兼容Python 3.6及以下版本

如果你的Python版本低于3.7,可使用python-dateutil库的isoparse()方法,兼容性更强:

  1. 先安装依赖:
pip install python-dateutil
  1. 代码实现:
from dateutil.parser import isoparse

time_str = "2022-11-05T22:36:48.701614+01:00"
dt = isoparse(time_str)
timestamp = dt.timestamp()
print(timestamp)

时间差计算示例

得到datetime对象后,直接相减再调用total_seconds()即可获取时间差(或用timestamp直接相减,结果一致):

time_str_a = "2022-11-05T22:36:48.701614+01:00"
time_str_b = "2022-11-06T00:36:48.701614+01:00"

dt_a = datetime.fromisoformat(time_str_a)
dt_b = datetime.fromisoformat(time_str_b)

# 计算时间差(秒)
time_diff = (dt_b - dt_a).total_seconds()
print(time_diff)  # 输出 7200.0,即2小时

内容的提问来源于stack exchange,提问作者Kyle

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 06:27:16