在业务处理中,经常需要判断某天或者当天是不是工作日,或者是不是休假日,使用Python实现日期是否为节假日的方法如下:
import datetime
from chinese_calendar import is_workday
import pandas as pd
def create_assist_date(datestart = None,dateend = None):
# 创建日期辅助表
if datestart is None:
datestart = '2016-01-01'
if dateend is None:
dateend = datetime.datetime.now().strftime('%Y-%m-%d')
# 转为日期格式
datestart=datetime.datetime.strptime(datestart,'%Y-%m-%d')
dateend=datetime.datetime.strptime(dateend,'%Y-%m-%d')
date_list = []
date_list.append(datestart.strftime('%Y-%m-%d'))
while datestart<dateend:
# 日期叠加一天
datestart+=datetime.timedelta(days=+1)
# 日期转字符串存入列表
date_list.append(datestart.strftime('%Y-%m-%d'))
return date_list
def year_month_day(list_data):
#判断日期是否为节假日
if_not_workday = []
for i in range(len(list_date)):
#date = datetime.datetime.now().date()
date2 = datetime.date(list_date[i].year,list_date[i].month,list_date[i].day)
if is_workday(date2):
if_not_workday.append("是工作日")
else:
if_not_workday.append("是休息日")
return if_not_workday
if __name__ == '__main__':
list_date = create_assist_date("2010-01-01","2022-12-31")
data = pd.DataFrame(list_date,columns = ['list_date'])
data['list_date'] = pd.to_datetime(data['list_date'])
list_date = data['list_date']
if_not_workday = year_month_day(list_date)
data['if_not_workday'] = if_not_workday
data