Python - Exclude weekends between two Dates

前端 未结 4 429
刺人心
刺人心 2021-01-13 11:08

I want to calculate the difference between the two dates but want to exclude the weekends from it . Below is the format of dates :

CreateDate  - 2017-08-29 1         


        
相关标签:
4条回答
  • 2021-01-13 11:12

    Run a while loop that keeps adding a timedelta of +1 day to create_date. Keep track of weekday vs. weekend in a separate counter.

    0 讨论(0)
  • 2021-01-13 11:14

    One more python way using isoweekday():

    import datetime, pprint
    
    # isoweekday: Monday is 1 and Sunday is 7
    start_date = datetime.date(2017, 10, 1)
    end_date = datetime.date(2017, 12, 31)
    days = end_date - start_date
    valid_date_list = {(start_date + datetime.timedelta(days=x)).strftime('%d-%b-%Y')
                            for x in range(days.days+1)
                            if (start_date + datetime.timedelta(days=x)).isoweekday() <= 5
                           }
    print("Business Days = {}".format(len(valid_date_list)))
    
    0 讨论(0)
  • 2021-01-13 11:33

    You can use numpy.busday_count:

    from datetime import datetime
    import numpy as np
    
    create_date = "2017-08-29 10:47:00"
    resolve_date = "2017-09-23 16:56:00"
    
    create_datetime = datetime.strptime(create_date, '%Y-%m-%d %H:%M:%S')
    resolve_datetime = datetime.strptime(resolve_date, '%Y-%m-%d %H:%M:%S')
    
    print(f"The difference in days is: {(resolve_datetime - create_datetime).days}")
    print(f"The difference in business days is: {np.busday_count(create_datetime.date(), resolve_datetime.date())}")
    

    Output:

    The difference in days is: 25
    The difference in business days is: 19
    
    0 讨论(0)
  • 2021-01-13 11:35

    With datetime module:

    import datetime
    
    d1 = datetime.datetime.strptime('2017-08-29 10:47:00', '%Y-%m-%d %H:%M:%S')
    d2 = datetime.datetime.strptime('2017-09-23 16:56:00', '%Y-%m-%d %H:%M:%S')
    delta = (d2 - d1).days
    diff_weekdays = delta - (delta // 7) * 2
    
    print(diff_weekdays)    # 19
    
    0 讨论(0)
提交回复
热议问题