获取前一工作日的两种方法(顾榕蓉)
背景介绍
流程设计中,我们大多处理的业务是当日的前一天工作日的内容。这里分享两个获取迁移工作日的方法。在此之前,我们需要自己制作一个节假日的表格,罗列出流程运行期间的所有节假日。
方法一
在流程全局函数中编写。
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