python获取年末,月末,季末的日期和距指定时间的天数

我们在python日常使用中经常会用到时间的各种计算,这个也是让人头疼的地方,下面的方法实现了 年末,月末,季末的日期和距指定时间的天数的计算,要的拿去。自己也做个笔记。后面直接用。

def last_day(any_day):
    """
    获取获得一个月未,季末,年未的天数 的最后一天
    :param any_day: 任意日期
    :return: <class 'datetime.date'年,月,季末的日期,距年末,月末,季末的天数
    """
    next_month = any_day.replace(day=28) + datetime.timedelta(days=4)  # this will never fail
    last_day_month = next_month - datetime.timedelta(days=next_month.day)


    x = None
    if any_day.month>9:
        x = any_day.replace(month=12,day=31)
    elif any_day.month>6:
        x = any_day.replace(month=9, day=30)
    elif any_day.month >3:
        x = any_day.replace(month=6, day=30)
    else:
        x =  any_day.replace(month=3, day=31)
    last_day_quarter = x
    last_day_year = any_day.replace(month=12,day=31)


    ret = {
        "year":(last_day_year,(last_day_year-any_day).days),
        "month":(last_day_month,(last_day_month-any_day).days),
        "quarter":(last_day_quarter,(last_day_quarter-any_day).days),
    }


    return ret
if __name__ == "__main__":
  
    year = datetime.datetime.now().year
    month = datetime.datetime.now().month
    day = datetime.datetime.now().day
    res = last_day(datetime.date(year, 2, day))
    print(type(res),res)

=output============
<class 'dict'> {'year': (datetime.date(2020, 12, 31), 313), 'month': (datetime.date(2020, 2, 29), 7), 'quarter': (datetime.date(2020, 3, 31), 38)}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值