How to get the last day of the month?

后端 未结 30 2629
迷失自我
迷失自我 2020-11-22 06:13

Is there a way using Python\'s standard library to easily determine (i.e. one function call) the last day of a given month?

If the standard library doesn\'t support

30条回答
  •  悲哀的现实
    2020-11-22 07:08

    If you don't want to import the calendar module, a simple two-step function can also be:

    import datetime
    
    def last_day_of_month(any_day):
        # this will never fail
        # get close to the end of the month for any day, and add 4 days 'over'
        next_month = any_day.replace(day=28) + datetime.timedelta(days=4)
        # subtract the number of remaining 'overage' days to get last day of current month, or said programattically said, the previous day of the first of next month
        return next_month - datetime.timedelta(days=next_month.day)
    

    Outputs:

    >>> for month in range(1, 13):
    ...     print last_day_of_month(datetime.date(2012, month, 1))
    ...
    2012-01-31
    2012-02-29
    2012-03-31
    2012-04-30
    2012-05-31
    2012-06-30
    2012-07-31
    2012-08-31
    2012-09-30
    2012-10-31
    2012-11-30
    2012-12-31
    

提交回复
热议问题