计算到下一个假日的天数

2024-06-10 03:35:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我想计算下一个假期(如圣诞节)的天数。例如,如果输入是2019-12-01,那么答案是24 days,如下所示:

import datetime
START_DATE = '2019-12-01'
startdate = datetime.datetime.strptime(START_DATE, '%Y-%m-%d')
XMAS_2019 = '2019-12-25'
xmas2019 = datetime.datetime.strptime(XMAS_2019, '%Y-%m-%d')
(xmas2019-startdate).days
# 24

我想要一个不需要在假日日期中指定年份的解决方案。例如,如果输入是2018-12-012016-12-01,我就不必手动定义xmas2018xmas2016并以天为单位计算差值。假设input_date是一个适当的datetime变量

def days_to_xmas(input_date):
    ...
    ans = (input_date - ...).days
    return ans

Tags: 答案importinputdatetimedatedaysstart年份
1条回答
网友
1楼 · 发布于 2024-06-10 03:35:35

您应该使用辅助函数根据您的输入来计算圣诞节。根据@markransem提供的反馈:

import datetime
def get_christmas(date):
    """Returns the date of the Christmas of the year of the date"""
    next_xmas = datetime.datetime(date.year, 12, 25)
    if next_xmas < date:
        next_xmas = datetime.datetime(date.year+1, 12, 25)
    return next_xmas

然后使用您定义的函数:

def days_to_xmas(input_date):
    if type(input_date) is str:
        startdate = datetime.datetime.strptime(input_date, '%Y-%m-%d')
    else:
        startdate = input_date
    ans = (get_christmas(startdate) - startdate).days
    return ans

假设input_datedatetime变量,下面的函数就简化了

def days_to_xmas(input_date):
    ans = (get_christmas(input_date) - input_date).days
    return ans

需要验证的示例

days_to_xmas(datetime.datetime.strptime('2017-12-01', '%Y-%m-%d'))
# 24
days_to_xmas(datetime.datetime.strptime('2017-12-26', '%Y-%m-%d'))
# 364

相关问题 更多 >