2017-09-24 104 views

回答

0

運行while循環,不斷添加timedelta的+1天至create_date。在單獨的櫃檯跟蹤週日和週末。

0

隨着datetime模塊:

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 
1

您可以使用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("The difference in days is: %d" % ((resolve_datetime - create_datetime).days)) 
print("The difference in business days is: %d") % (np.busday_count(create_datetime, resolve_datetime)) 

輸出:使用isoweekday

The difference in days is: 25 
The difference in business days is: 19 
+0

嗨,感謝您的解決方案,但我們如何才能得到確切的分數值? (包括幾個小時?) –

0

還有一個蟒蛇方式():

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))) 
相關問題