python获取万年历数据,判断一年中的某一天是否为节假日

公司最近有一个需求需要给后端提供一份万年历数据。显示一年中的每一天是工作日就还是节假日。网上有一些api接口,当然这些接口时需要收费的。我整理了一下网上的资料,写了一些代码来完成这个任务。
首先获取一年中的所有日期:

def isLeapYear(years):
    '''
    通过判断闰年,获取年份years下一年的总天数
    :param years: 年份,int
    :return:days_sum,一年的总天数
    '''
    # 断言:年份不为整数时,抛出异常。
    assert isinstance(years, int)

    if ((years % 4 == 0 and years % 100 != 0) or (years % 400 == 0)):  # 判断是否是闰年
        # print(years, "是闰年")
        days_sum = 366
        return days_sum
    else:
        # print(years, '不是闰年')
        days_sum = 365
        return days_sum


def getAllDayPerYear(years):
    '''
    获取一年的所有日期
    :param years:年份
    :return:全部日期列表
    '''
    start_date = '%s-1-1' % years
    a = 0
    all_date_list = []
    days_sum = isLeapYear(int(years))
    while a < days_sum:
        b = arrow.get(start_date).shift(days=a).format("YYYY-MM-DD")
        a += 1
        yield b

然后安装chinese_calendar
githup地址:https://github.com/LKI/chinese-calendar

all_date_list = getAllDayPerYear("2019")
        url = 'https://www.baidu.com/'
        for date in all_date_list:
            item = {}
            startTime = datetime.datetime.strptime(date, '%Y-%m-%d')
            from chinese_calendar import is_workday, is_holiday
            date_type = '节假日'
            if is_workday(startTime):
                date_type = '工作日'
            item['date_time'] = date
            item['date_type'] = date_type
            print(item)

输出结果如下:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值