首页 > 其他分享 >chinesecalendar:判断日期是不是工作日

chinesecalendar:判断日期是不是工作日

时间:2024-05-07 14:44:59浏览次数:17  
标签:chinesecalendar datetime 日期 return True day today 工作日

工作与学习中,有个场景需要判断指定日期是不是工作日,例如自动化办公工作日自动发邮件,量化交易判断是否为交易日等等, 因此我们需要能准确判断给的日期是不是工作日,Python中一般使用模块chinesecalendar来解决这个问题。

网友自己维护

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

# 判断指定日期

is_workday(datetime(2020, 8, 1)) # 不是工作日,False
is_holiday(datetime(2020, 8, 1)) # 是休假日,True

# 判断当天
is_workday() # 是不是工作日,True 为是
is_holiday() # 是不是休假日,True 为是

安装

官方文档:https://pypi.org/project/chinesecalendar/

pip install chinesecalendar

使用

import datetime
from chinese_calendar import is_workday


# 判断是否为工作日
date = datetime.datetime.now().date()

date2 = datetime.date(2023, 9, 25)

if is_workday(date2):
    print("是工作日")
else:
    print("是休息日")
    
# 判断是否为调休日
from chinese_calendar import is_in_lieu

print(is_in_lieu(date2))

来自: 每日一模块:chinesecalendar

标签:chinesecalendar,datetime,日期,return,True,day,today,工作日
From: https://www.cnblogs.com/luckzack/p/18177291

相关文章

  • JS实现图表日期分类按色显示
    预想要达成的效果图: 关键步聚: js代码如下function(){vardate=newDate(this);if(date.getDay()==0||date.getDay()==6){return"<fontcolor='red'>"+date.getDate()+"</font>"}else{returndate.getD......
  • 动态设置时间显示:hh:mm、星期、或具体日期
    封装共同方法exportfunctionformatMsgTime(time){//time传入的是时间戳,且时间戳长度为10位consttodayZero=newDate().setHours(0,0,0,0);constyearZero=newDate(newDate().getFullYear(),0,1,0,0,0,0).getTime();consttarget=newD......
  • dayjs 根据选择的日期获取当前周的周一到周天
    //设置表头日期constsetHeadDate=(val:any)=>{constnowDay=dayjs(val).day()//这周的第一天letstr:any=nullif(nowDay){//非周天,即当周str=dayjs(val).startOf('week').add(1,'day')}else{//周天,先减去一天,当作是上周的,然后......
  • 文件(夹)批量重命名数字、字母、日期、中文数字大写小写
     首先,需要用到的这个工具:度娘网盘提取码:qwu2蓝奏云提取码:2r1z目标是重命名下面5个文件(也可以是文件夹等,任意),从大写中文数字“贰”开始 打开工具,找到“文件批量复制”版块,快捷键Ctrl+5 找到右下角重命名按钮,点击打开 把那5个要重命名的文件拖入(也可以右边的按钮......
  • linux21-日期时间
    linux21-日期时间date查看系统时间更改/etc/localtime修改时区ntp自动校准时区date查看系统时间date[-d][+格式化字符串]-d,通过给定的字符串显示日期,一般用于日期计算,支持以下时间标记year年month月day天hour小时minute分钟s......
  • antd表格日期排序
     {dataIndex:'contractSignDate',key:'contractSignDate',title:'合同签订日期',width:120,ellipsis:true,sorter:(a,b)=>moment(a?.contractSignDate).valueOf()-moment(b?.contractSignD......
  • antd日期选择框,前后日期增加限制
     constdisabledDateStart=useCallback((current)=>{if(!contractEndDateValue){returnfalse}else{returncurrent&&current>contractEndDateValue;}},[contractEndDateValue])constdisabledDateEnd=......
  • C# winform 漂亮的日期时间控件
    源代码下载:https://download.csdn.net/download/gaoxiang19820514/89242240效果图在HZH-Controls控件基础上修改的日期控件因为HZH_Controls控件中的日期控件太大了,我的程序中需要多个日期时间的控件放不下,主题是绿色的,所以手动调了一下样式。为了和HZH_Controls同时使......
  • 为啥在编程的世界里,日期时间处理这么难?
    做过开发的同学都有体会,日期时间的处理很麻烦,稍不注意就会出现日期格式不一样,或者时间差8小时。那为何日期时间这么难处理呢?今天我们就来梳理一下在编程的世界里,为啥日期时间这么难处理。我们先来熟悉几个概念1、时区(Timezone)由于各地的日出日落时间不同,所以把全球所有地区共......
  • 图文解说ChinaCock日期组件CCDateTimePicker(二)
    上文,介绍了CCDateTimePicker基本用法,实现日期、时间等各种日期格式的输入,用法简单,代码简洁。能不能用这个控件,来实现自定义的输入格式呢?答案是能。比如:我的需要求就遇到这样的情况,用户要选择星期几的方式,如下图,是已经实现的结果: 接下来看看如何实现的?第一步,先定义一个数组: ......