1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90
|
import sys sys.path.append("..") from datetime import datetime, timedelta from dateutil import rrule from dateutil.parser import parse
hoilday_is_work = ['20180101', '20180215', '20180216', '20180219', '20180220', '20180221', '20180405', '20180406', '20180430', '20180501', '20180618', '20180924', '20181001', '20181002 ', '20181003', '20181004', '20181005']
week_2_work = ['20180211', '20180224', '20180408', '20180428', '20180929', '20180930']
def workdays(start, end, holidays=0, days_off=None): if days_off is None: days_off = 5, 6 workdays = [x for x in range(7) if x not in days_off] days = rrule.rrule(rrule.DAILY, dtstart=start, until=end, byweekday=workdays) return days.count() - holidays - 1
def get_start_end_month(x): the_year = datetime.today().strftime('%Y') dt_start = (datetime(int(the_year), x, 1)).strftime("%Y-%m-%d") if 12 == x: dt_end = (datetime(int(the_year), 12, 31)).strftime("%Y-%m-%d") else: dt_end = (datetime(int(the_year), x+1, 1) - timedelta(days=1)).strftime("%Y-%m-%d") return [dt_start, dt_end]
def gen_data(day1, day2): day1 = parse(day1) day2 = parse(day2) hoilday = 0 for x in range((day2 - day1).days + 1): singledays = (day1 + timedelta(days=x)).strftime('%Y%m%d') if singledays in hoilday_is_work: hoilday += 1 if singledays in week_2_work: hoilday -= 1 period_time = workdays(day1, day2, hoilday) print(period_time) return period_time
if __name__ == '__main__': try: day1 = '20180930' day2 = '20181010' gen_data(day1, day2) except BaseException as e: print(e)
|