如何用Python获取上一财季日期并注入API请求Payload?
解决方案
可以用pandas的Period和时间处理能力轻松实现需求,以下是具体步骤和修改后的代码:
步骤说明
- 获取当前日期,转换为季度周期对象,默认按自然财季计算(Q1=1-3月、Q2=4-6月等,非自然财季可调整参数)
- 推导上一个季度的周期,提取该季度的结束日期
- 计算该季度开始日期的前一天,作为API需要的
start_date
修改后的代码
首先确保已安装pandas:
pip install pandas
替换原有代码中的日期逻辑:
import datetime as dt import pandas as pd def get_previous_quarter_dates(): # 获取当前日期 today = dt.datetime.today() # 转换为自然季度周期,若财季非自然(如Q1为10-12月),可改为freq='Q-SEP' current_quarter = pd.Period(today, freq='Q') # 获取上一个季度 previous_quarter = current_quarter - 1 # 提取上一季度的结束日期 quarter_end = previous_quarter.end_time.to_pydatetime() # 计算上一季度开始日期的前一天 quarter_start = previous_quarter.start_time.to_pydatetime() start_date = (quarter_start - dt.timedelta(days=1)).strftime("%Y-%m-%d") end_date = quarter_end.strftime("%Y-%m-%d") return start_date, end_date def job_initializer(): # 动态获取上一财季日期 start_date, end_date = get_previous_quarter_dates() # calling function that returns variables required for API call key, secret, url = authentication() payload = """ { "data":{ "type":"jobs", "attributes":{ "job_type":"portfolio_view_results", "parameters":{ "view_id":"416555", "portfolio_type":"firm", "portfolio_id":"1", "output_type":"csv", "start_date":"%s", "end_date":"%s" } } } } """ % (start_date, end_date) # 后续API请求逻辑...
非自然财季适配
如果你的财季不是自然季度(例如财季结束于9月,Q1为10-12月),只需修改pd.Period的freq参数:
- 财季结束于3月:
freq='Q-MAR' - 财季结束于6月:
freq='Q-JUN' - 财季结束于9月:
freq='Q-SEP'
内容的提问来源于stack exchange,提问作者William
相关产品推荐
相关产品推荐

