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

Python实现Fortnite API最新日期检测及间隔天数计算问题求助

问题分析与修复方案

核心问题点

  • 错误直接将shopHistory数组传给isoparse:shopHistory是包含多个ISO日期字符串的数组,无法直接被单个日期解析函数处理
  • 冗余的日期转换逻辑:从ISO字符串转timestamp再转datetime再转字符串再解析,完全是无效的绕路操作
  • 错误使用max(r.days):r.days是单个整数数值,max()函数用于数组取值,此处逻辑完全错误

修复后的代码

import requests
from datetime import datetime
from dateutil.parser import isoparse
from dateutil.relativedelta import relativedelta

# 请求API并处理异常
response = requests.get("https://fortnite-api.com/v2/cosmetics/br/search/all?language=es&name=palito%20de%20pescado%20de%20gominola&searchLanguage=es")
response.raise_for_status()  # 捕获请求失败的情况
data = response.json()

# 提取并解析所有上架日期
shop_history_dates = [isoparse(date_str) for date_str in data['data'][0]['shopHistory']]
# 获取最新的上架日期
latest_shop_date = max(shop_history_dates)

# 计算与当前日期的间隔(保持时区一致避免警告)
current_date = datetime.now(latest_shop_date.tzinfo)
# 精确间隔天数
exact_days = (current_date - latest_shop_date).days
# 按年/月/日拆分的间隔
delta = relativedelta(current_date, latest_shop_date)

print(f"最新上架日期:{latest_shop_date}")
print(f"到当前的精确间隔天数:{exact_days}")
print(f"间隔拆分:{delta.years}年 {delta.months}月 {delta.days}天")

关键修复说明

  • 先遍历shopHistory数组,将每个日期字符串解析为可比较的datetime对象
  • 直接用max()在datetime数组中获取最新日期(datetime原生支持大小比较)
  • 保持时区一致:确保当前日期与上架日期使用同一时区,避免时区不匹配的警告
  • 精确天数直接通过两个datetime对象的差值获取,比relativedelta更简洁可靠
  • 添加请求异常处理,提升代码稳定性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 18:55:23