一、代码
import datetime import calendar from chinese_calendar import is_workday import pandas as pd # 判断是否为星期1 def is_monday(): today = datetime.datetime.now().weekday() if today == 0: return True # 判断是否为星期2 def is_tuesday(): today = datetime.datetime.now().weekday() if today == 1: return True # 判断是否为星期3 def is_wednesday(): today = datetime.datetime.now().weekday() if today == 2: return True # 判断是否为星期4 def is_thursday(): today = datetime.datetime.now().weekday() if today == 3: return True # 判断是否为星期5 def is_friday(): today = datetime.datetime.now().weekday() if today == 4: return True # 判断是否为星期6 def is_saturday(): today = datetime.datetime.now().weekday() if today == 5: return True # 判断是否为星期日 def is_sunday(): today = datetime.datetime.now().weekday() if today == 6: return True # 判断上几工作日 def is_word_day(date_num): day = datetime.datetime.now() + datetime.timedelta(days=date_num) res = is_workday(day) if res: return day.strftime("%Y-%m-%d") else: date_num += 1 return is_word_day(date_num) # 上一自然日 def up_day(): return (datetime.datetime.now() + datetime.timedelta(days=-1)).strftime("%Y-%m-%d") # 获取指定前后天 def get_day(date_num): day = datetime.datetime.now() + datetime.timedelta(days=date_num) return day.day # excel中5位日期数字的转换 def turn_time(delta_days): """ delta_days:就是那个五位数 """ # 上一步得到的就是一个pandas的时间戳形式,然后我们转换成合适的时间格式就好了 # Timestamp('1899-12-30 00:00:00') real_time = pd.to_datetime('1899-12-30') + pd.Timedelta(str(delta_days) + 'D') # eg:'44701D' return real_time.strftime("%Y/%m/%d") # 获取上个月末 def before_month_last_day(): today = datetime.datetime.now() first = datetime.date(day=1, month=today.month, year=today.year) last_day = first - datetime.timedelta(days=1) return last_day.strftime("%Y%m%d") # 获取上几工作日 def get_2up_work(up_date=1, is_work=0, date=1): ''' :param up_date:固定参数值 :param is_work:固定参数值
:param date:可以用来调整前几天工作日 :return: ''' day = datetime.datetime.now() + datetime.timedelta(days=-up_date) res = is_workday(day) if res: if is_work == date: return day.strftime("%Y%m%d")
is_work+=1
up_date+=1 return get_2up_work(up_date, is_work,date) else: up_date += 1 return get_2up_work(up_date, is_work,date) # 获取上个月初 def before_month_fristday(): today = datetime.datetime.now()
if today.month==1:
first=datetime.date(day=1,month=12,year=today.year-1)
else: first = datetime.date(day=1, month=today.month - 1, year=today.year) return first.strftime("%Y%m%d") # 获取上个星期几 def get_up_day(day=1): ''' :param day: 获取上个星期几,1-7 :return: ''' cal_dict = {1: calendar.MONDAY, 2: calendar.TUESDAY, 3: calendar.WEDNESDAY, 4: calendar.THURSDAY, 5: calendar.FRIDAY, 6: calendar.SATURDAY, 7: calendar.SUNDAY} date = datetime.datetime.now() oneday = datetime.timedelta(days=1) while date.weekday() != cal_dict.get(day, calendar.MONDAY): date -= oneday return date.strftime("%Y%m%d")