Python中如何计算文章created_at与modified_at的小时时间差?
问题分析
原代码的核心问题是没有针对单篇文章配对处理创建时间和修改时间:
- 遍历文章时,把所有创建时间存入
dateCreated列表后又嵌套循环解析,最终datetimeObjectCreated只会保留最后一个解析的时间,并非每篇文章对应的创建时间 - 修改时间的处理逻辑完全一致,
datetimeObjectModified也仅保留最后一篇的修改时间 - 直接用这两个变量计算差值,得到的是最后一篇的修改时间减最后一篇的创建时间,自然和其他文章的时间差不匹配
修正后的代码实现
直接遍历每篇文章,同步获取并解析该文章的created_at和modified_at,计算小时差并输出/存储:
from datetime import datetime import requests # 请求API获取文章列表 rArticles = requests.get("https://....", auth=(apiKey, password)) responseArticles = rArticles.json() # 遍历单篇文章,计算对应时间差 for art in responseArticles["articles"]: # 解析当前文章的创建、修改时间 created_dt = datetime.strptime(art["created_at"], '%Y-%m-%dT%H:%M:%SZ') modified_dt = datetime.strptime(art["modified_at"], '%Y-%m-%dT%H:%M:%SZ') # 转换为小时级时间差(支持小数,如30分钟为0.5小时) time_diff_hours = (modified_dt - created_dt).total_seconds() / 3600 # 按需输出或保存结果 print(f"文章ID: {art.get('id', '未知')},创建与修改时间差: {time_diff_hours:.2f} 小时")
关键说明
- 移除了多余的列表存储和嵌套循环,直接针对单篇文章处理时间,确保创建与修改时间一一对应
- 通过
total_seconds()将时间差转换为秒后除以3600,得到精确到小数的小时数 - 若需要批量保存所有文章的时间差,可初始化一个空列表,在循环内将结果
append进去
内容的提问来源于stack exchange,提问作者Katie
相关产品推荐
相关产品推荐

