2017-02-23 87 views
1

Я пытаюсь найти очень чистый метод расчета количества часов между двумя датами, исключая выходных и определенных праздников.Как найти количество часов между двумя датами, исключая выходные и праздники в Python? BusinessHours пакет

Что я узнал, так это то, что пакет BusinessHours (https://pypi.python.org/pypi/BusinessHours/1.01) может это сделать. Однако я не нашел инструкции о том, как использовать пакет (на самом деле синтаксис), особенно, как вводить праздники. Я нашел исходный код пакета (https://github.com/dnel/BusinessHours/blob/master/BusinessHours.py), но все еще не так уверен. Я предполагаю, что это может быть что-то вроде этого:

date1 = pd.to_datetime('2017-01-01 00:00:00') 
date2 = pd.to_datetime('2017-01-22 12:00:00') 
import BusinessHour 
gethours(date1, date2, worktiming=[8, 17], weekends=[6, 7]) 

Тем не менее, где я могу входные праздники? А что делать, если я делаю не хочу исключить нерабочий час, я просто отрегулирую worktiming на worktiming=[0,23]?

Кто-нибудь знает, как использовать этот пакет, пожалуйста, расскажите мне об этом. Я ценю это.

P/s: Я знал, что команда в NumPy, чтобы получить количество рабочих дней между 2 датами (busday_count), но нет команды, чтобы получить результат в часов. Также приветствуются любые другие команды в пандах или numpy, которые могут выполнять задачу. Спасибо

ответ

0

Самая последняя установка пакета этого пакета 1.2 имеет ошибку в строке 51 с надписью «extraday», которая должна быть изменена на «extradays».

Я тоже прочесываю интернет за какой-нибудь работоспособный код для расчета рабочего времени и рабочих дней. Этот пакет имел немного tweeking, но прекрасно работает, когда вы его запускаете и запускаете.

Это то, что у меня в записной книжке:

#import BusinessHours 
from BusinessHours import BusinessHours as bh 
import numpy as np 
import pandas as pd 
from pandas import Series, DataFrame 

date1 = pd.to_datetime('2017-01-01 00:00:00') 
date2 = pd.to_datetime('2017-01-22 12:00:00') 
bh(date1, date2, worktiming=[8, 17], weekends=[6, 7]).gethours() 

Это было также в исходном коде:

''' 
holidayfile - A file consisting of the predetermined office holidays. 
Each date starts in a new line and currently must only be in the format 
dd-mm-yyyy 
''' 

Надеется, что это помогает

0

Попробуйте этот пакет называется бизнес-час в PyPi

Примерный код

from business_duration import businessDuration 
import pandas as pd 
from datetime import time,datetime 
import holidays as pyholidays 

startdate = pd.to_datetime('2017-01-01 00:00:00') 
enddate = pd.to_datetime('2017-01-22 12:00:00') 

holidaylist = pyholidays.Australia() 
unit='hour' 
#By default Saturday and Sunday are excluded 

print(businessDuration(startdate,enddate,holidaylist=holidaylist,unit=unit)) 
Output: 335.99611 

holidaylist: 
{datetime.date(2017, 1, 1): "New Year's Day", 
datetime.date(2017, 1, 2): "New Year's Day (Observed)", 
datetime.date(2017, 1, 26): 'Australia Day', 
datetime.date(2017, 3, 6): 'Canberra Day', 
datetime.date(2017, 4, 14): 'Good Friday', 
datetime.date(2017, 4, 15): 'Easter Saturday', 
datetime.date(2017, 4, 17): 'Easter Monday', 
datetime.date(2017, 4, 25): 'Anzac Day', 
datetime.date(2017, 6, 12): "Queen's Birthday", 
datetime.date(2017, 9, 26): 'Family & Community Day', 
datetime.date(2017, 10, 2): 'Labour Day', 
datetime.date(2017, 12, 25): 'Christmas Day', 
datetime.date(2017, 12, 26): 'Boxing Day'} 

 Смежные вопросы

  • Нет связанных вопросов^_^