我正在寻找一种优雅而Python化的方式来获取上一季度末的日期。像这样的东西:def previous_quarter(reference_date): ...>>> previous_quarter(datetime.date(2013, 5, 31))datetime.date(2013, 3, 31)>>> previous_quarter(datetime.date(2013, 2, 1))datetime.date(2012, 12, 31)>>> previous_quarter(datetime.date(2013, 3, 31))datetime.date(2012, 12, 31)>>> previous_quarter(datetime.date(2013, 11, 1))datetime.date(2013, 9, 30)编辑:我尝试了什么吗?是的,这似乎可行:def previous_quarter(ref_date): current_date = ref_date - timedelta(days=1) while current_date.month % 3: current_date -= timedelta(days=1) return current_date但这似乎是不必要的迭代。
3 回答

繁花不似锦
TA贡献1851条经验 获得超4个赞
利用所涉及的数据模式,并将问题转变为表格查询-您的经典时空交易:
from datetime import date
PQTBL = (((12,31,-1),)*3 + ((3,31,0),)*3 + ((6,30,0),)*3 + ((9,30,0),)*3)
def previous_quarter(ref):
entry = PQTBL[ref.month-1]
return date(ref.year+entry[2], entry[0], entry[1])
添加回答
举报
0/150
提交
取消