pandas 获取URL在一个月中任意一天的动态日期

9rygscc1  于 2022-12-02  发布在  其他
关注(0)|答案(1)|浏览(148)

我正在抓取一个有请求的网站。URL需要动态日期,所以我生成的日期与以下变量一起使用:

stmDt = (pd.to_datetime('today').date()+ pd.offsets.MonthBegin(-1)).strftime('%d-%b-%Y')
todDt = (pd.to_datetime('today').date()).strftime('%d-%b-%Y') 
snmDt = (pd.to_datetime('today').date()+ pd.offsets.MonthBegin(1)).strftime('%d-%b-%Y')
enmDt = (pd.to_datetime('today').date()+ pd.offsets.MonthEnd(2)).strftime('%d-%b-%Y')

在本例中,我在2022年11月30日(当月的最后一天)运行此脚本。

  • stmDt =本月开始日期(运行脚本月份的第一天- 11/1/2022)
  • todDt =今天(2022年11月30日)
  • snmDt =下个月开始(2022年12月1日)
  • enmDt =下个月结束(2022年12月31日)

日期变量在大多数情况下都是正确的,但它显示(对于11月的运行日期):

  • 每月第一天:stmDt显示上个月的第一天(10/1/22)
  • 在该月的最后一天:enmDt显示两个月后的最后一天(1/31/23)

我如何调整这些,使他们总是给予我正确的日期?高兴地使用其他软件包来完成等
谢谢

edqdpe6u

edqdpe6u1#

您可以使用dateutil.relativedelta来执行此操作,如下所示:

from datetime import datetime
from dateutil.relativedelta import relativedelta

today = datetime.now()

stmDt = today.replace(day=1).strftime('%d-%b-%Y')
todDt = today.strftime('%d-%b-%Y') 
snmDt = (today + relativedelta(months=1)).replace(day=1).strftime('%d-%b-%Y')
enmDt = ((today + relativedelta(months=2)).replace(day=1) - relativedelta(days=1)).strftime('%d-%b-%Y')

相关问题