如何用Python获取当前周或季度的最后日期?
获取当前周、季度最后日期的简便方法
既然你已经在用pandas和dateutil的relativdelta获取当月最后一天,下面直接给你适配这两个工具的周、季度最后日期实现方法:
一、当前周的最后日期
注意:不同地区周的起止日有差异,以下默认以周日作为一周的最后一天(如果需要调整为周六或周一,改对应参数即可)。
用dateutil.relativedelta实现
借助dateutil.rrule里的星期常量,SU(-1)代表当前周的最后一个周日:
import pandas as pd from dateutil.relativedelta import relativedelta from dateutil.rrule import SU today_date = pd.Timestamp.today().date() current_week_last_date = today_date + relativedelta(weekday=SU(-1))
用pandas原生方法实现
Pandas的Timestamp自带weekday()方法(0=周一,6=周日),直接计算剩余天数:
today = pd.Timestamp.today() # 计算到周日的剩余天数,加进去就是周最后一天 current_week_last_date = today + pd.Timedelta(days=(6 - today.weekday())) # 如果要以周六为周结束,把6改成5即可
二、当前季度的最后日期
用dateutil.relativedelta实现
先跳到下一季度的第一天,再往前推一天,就能得到当前季度的最后一天:
today_date = pd.Timestamp.today().date() # 计算需要跳几个月到下一季度首月,再减一天 current_quarter_last_date = today_date + relativedelta(months=3 - (today_date.month-1)%3, day=1) - relativedelta(days=1)
用pandas原生方法实现
Pandas的QuarterEnd偏移量可以直接定位到当前季度的结束日期,非常省心:
from pandas.tseries.offsets import QuarterEnd today = pd.Timestamp.today() current_quarter_last_date = today + QuarterEnd(n=0) # n=0代表当前季度结束,n=1就是下一季度结束,以此类推
内容的提问来源于stack exchange,提问作者econlearner
相关产品推荐
相关产品推荐

