Python如何自动获取前一天UTC日期用于RESTAPI请求参数
问题原因
你之前的写法存在两个核心问题:
datetime.now()默认获取的是本地时区时间,不符合你要求的UTC时区标准,会导致日期计算偏差- 没有将datetime对象格式化为接口要求的字符串格式,直接传入datetime对象会触发请求报错
实现代码
通用兼容写法(支持Python 3.x所有版本)
from datetime import datetime, timedelta # 取UTC时区当前时间,往前推1天得到前一天日期 utc_yesterday = datetime.utcnow() - timedelta(days=1) # 提取日期部分格式化为YYYY-MM-DD date_str = utc_yesterday.strftime("%Y-%m-%d") # 拼接固定后缀生成请求参数 request_params = { "QueryStartDate": f"{date_str}T12:00:00.000Z", "QueryEndDate": f"{date_str}T12:10:00.000Z" }
Python 3.9+ 规范写法(避免utcnow()未来版本弃用风险)
from datetime import datetime, timedelta from zoneinfo import ZoneInfo # 显式指定UTC时区获取当前时间 utc_now = datetime.now(tz=ZoneInfo("UTC")) utc_yesterday = utc_now - timedelta(days=1) date_str = utc_yesterday.strftime("%Y-%m-%d") request_params = { "QueryStartDate": f"{date_str}T12:00:00.000Z", "QueryEndDate": f"{date_str}T12:10:00.000Z" }
验证说明
生成的参数会完全符合接口要求的格式,示例输出如下:
{ "QueryStartDate": "2024-05-20T12:00:00.000Z", "QueryEndDate": "2024-05-20T12:10:00.000Z" }
内容的提问来源于stack exchange,提问作者Marcus
相关产品推荐
相关产品推荐

