获取前一工作日的两种方法(顾榕蓉)

背景介绍

流程设计中,我们大多处理的业务是当日的前一天工作日的内容。这里分享两个获取迁移工作日的方法。在此之前,我们需要自己制作一个节假日的表格,罗列出流程运行期间的所有节假日。

方法一

在流程全局函数中编写。

def excel_init():
    #假日表
    holiday_list = iexcel.read_col(path = 'C:/Users/Administrator/Desktop/table/holiday.xlsx',cell = 'B2')
    #当前日期
    tmp_date = rpa_time.get_current_datetime_str(format='%Y%m%d')
#while循环
while True:
        tmp_date = rpa_time.dete_dalta(days=-2,date=tmp_date,format='%Y%m%d',return_format='%Y%m%d')
        if tmp_date in holiday_list:
            pass
        else:
            break
    tmp_date=tmp_date.replace('.','')
    return tmp_date
    print(tmp_date)

方法二

vaction_table = []	#vacation_table为节假日表
date = '2018.10.11' #此处用具体事件举例,流程设计中可以用“当前时间”组件
date_list = date.split('.')

year = int(date_list[0])
month = int(date_list[1])
day = int(date_list[2])

date = yesterday(date,year,month,day)
while date in vacation_table:
	date = yesterday(date,year,month,day)


def yesterday(date,year,month,day)
	day -=1
	if day < 1:
		month-=1:
		if month < 1:
			month = 12
			year-= 1
			day = last_month(year,month)   #得到上个月天数
			date = str(year) + str(month) + str(day) #这里改动了年月日
		else:
			date = date_list[0] + str(month) +str(day) #这里改动了月日
	else:
		date = date_list[0] + date_list[1] + str(day)  #这里只改动了日

		
def last_month(year,month):
	if month in [1,3,5,7,8,10,12]:
		return 31
	elif month==2:
		if year % 4 ==0 and year % 400 != 0:  #判断是否闰年
			return 29
		else:
			return 28
	else:
		return 30