zoukankan      html  css  js  c++  java
  • Python-判断某天是工作日还是节假日

    方法一:自己写【需要动态更新每年的节假日】

    from datetime import datetime
    
    # 休:正常工作日(周一至周五)放假日期
    holidays_exception = [
        '20200101',  # 元旦,周三
        '20200122',  # 如:公司提前放假
        '20200123',  # 如:公司提前放假
        '20200124',  # 除夕,周五
        '20200127',  # 春节,周一
        '20200128',  # 春节
        '20200129',  # 春节
        '20200130',  # 春节,周四
        '20200131',  # 新冠疫情国务院放假
        '20200201',  # 新冠疫情国务院放假
        '20200406',  # 清明,周一
        '20200501',  # 劳动节,周五
        '20200504',  # 劳动节,周一
        '20200505',  # 劳动节,周二
        '20200625',  # 端午,周二
        '20200626',  # 端午,周二
        '20201001',  # 国庆,周四
        '20201002',  # 国庆,周五
        '20201005',  # 国庆,周一
        '20201006',  # 国庆,周二
        '20201007',  # 国庆,周三
        '20201008',  # 国庆,周四
    ]
    
    # 班:正常周末(周六和周五)上班日期
    workdays_exception = [
        '20200201',  # 春节, 周六
        '20200426',  # 劳动节, 周日
        '20200509',  # 劳动节, 周六
        '20200628',  # 端午, 周日
        '20200927',  # 国庆,周六
        '20201010',  # 国庆,周六
    ]
    
    def is_workday(day=None):
        """
            Args:
                day: 日期, 默认为今日
    
            Returns:
                True: 上班
                False: 放假
        """
        # 如果不传入参数则为今天
        today = datetime.today()
        # logger.info(today)
        day = day or today
    
        week_day = datetime.weekday(day) + 1  # 今天星期几(星期一 = 1,周日 = 7)
        is_work_day_in_week = week_day in range(1, 6)  # 这周是不是非周末,正常工作日, 不考虑调假
        day_str = f'{day.year}{str(day.month).zfill(2)}{str(day.day).zfill(2)}'
        if day_str in workdays_exception:
                return True
            elif day_str in holidays_exception:
                return False
            elif is_work_day_in_week:
                return True
            else:
                return False
    
    def is_holiday(day=None):
        # 如果不传入参数则为今天
        today = datetime.today()
        day = day or today
        if is_workday(day):
            return False
        else:
            return True
    
    # 判断指定日期
    from datetime import datetime
    
    is_workday(datetime(2020, 8, 1)) # 不是工作日,False
    is_holiday(datetime(2020, 8, 1)) # 是休假日,True
    
    # 判断当天
    is_workday() # 是不是工作日,True 为是
    is_holiday() # 是不是休假日,True 为是
    

    方法二:模块

    pip install chinesecalendar
    
    import datetime
    from chinese_calendar import is_workday
    
    date = datetime.datetime.now().date()
    
    date2 = datetime.date(2021, 9, 25)
    
    if is_workday(date2):
        print("是工作日")
    else:
        print("是休息日")
    
    人生苦短,我用python!
  • 相关阅读:
    DDD实战进阶第一波(三):开发一般业务的大健康行业直销系统(搭建支持DDD的轻量级框架二)
    DDD实战进阶第一波(二):开发一般业务的大健康行业直销系统(搭建支持DDD的轻量级框架一)
    01-JavaScript之变量
    18-TypeScript模板方法模式
    17-TypeScript代理模式
    16-TypeScript装饰器模式
    15-TypeScript策略模式
    真的可以「 人人都是产品经理 」吗
    如何从程序员到架构师?
    除代码之外,程序员还有哪些能力也非常的关键?
  • 原文地址:https://www.cnblogs.com/sunxiuwen/p/15176168.html
Copyright © 2011-2022 走看看