计算上一季度末

我正在寻找一种优雅而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

但这似乎是不必要的迭代。


Smart猫小萌
浏览 168回答 3
3回答

繁花不似锦

利用所涉及的数据模式,并将问题转变为表格查询-您的经典时空交易:from datetime import datePQTBL = (((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])
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python