biztime
biztime
is a is a utility for calculating the total time between given
dates/times, while omitting non-working hours, weekends, and holidays as
configured by the user. Includes additional helper functions for interacting
with various datetime
objects.
Installation
Install and update using pip:
pip install biztime
Usage Example
>>> import biztime
>>> from datetime import date, datetime, time, timedelta
>>> bt = biztime.BizTime({
... 'biz_start': time(9, 0, 0),
... 'biz_end': time(17, 0, 0),
... 'weekend': [5, 6],
... 'holidays': [date(2018, 12, 24), date(2018, 12, 25)],
... })
>>> bt.time_diff(time(13, 0, 0), time(18, 0, 0))
datetime.timedelta(0, 14400)
>>> bt.date_diff(datetime(2018, 12, 9, 8, 0, 0), datetime(2018, 12, 15, 8, 0, 0))
datetime.timedelta(1, 57600)
>>> time_delta = bt.date_diff(datetime(2018, 12, 9, 8, 0, 0), datetime(2018, 12, 15, 8, 0, 0))
>>> biztime.convert_timedelta(time_delta, 'h')
40
>>> xmas_week = bt.date_diff(datetime(2018, 12, 23, 8, 0, 0), datetime(2018, 12, 29, 8, 0, 0))
>>> biztime.convert_timedelta(xmas_week, 'h')
24
>>> bt.is_biz_day(date(2018, 12, 25))
False
Reference
BizTime Class
BizTime(conf) Accepts a configuration dict to modify start/end times, weekends, and holidays.  Default values: 'biz_start' - datetime.time(9, 0, 0) # 9am 'biz_end' - datetime.time(17, 0, 0) # 5pm 'weekend' - [5, 6] # Sat, Sun 'holidays' - [] # None  Arg Types: conf - dictionary  BizTime.time_diff(start, end) Returns a datetime.timedelta object representing the number of working hours between the start and end time.  Arg Types: start - datetime.time end - datetime.time  BizTime.date_diff(start, end) Returns a datetime.timedelta object representing the number of working hours between the start and end time, having omitted weekends and holidays.  Arg Types: start - datetime.datetime end - datetime.datetime  BizTime.is_biz_day(date) Returns a bool indicating whether the given date is a weekend or holiday per the users' config.  Arg Types: date - datetime.date Â
Helper Functions
create_date_range(start, stop) Returns a list of datetime.date objects for all dates between the given start and end dates (inclusive).  Arg Types: start - datetime.date end - datetime.date  convert_timedelta(td, unit) Returns an int value representation of the given timedelta in the specified units.  Arg Types: td - datetime.timedelta unit - string ('s', 'm', or 'h')  dt_to_date(dt_in) Returns a datetime.date object from a given datetime object.  Arg Types: dt_in - datetime.datetime  dt_to_time(dt_in) Returns a datetime.time object from a given datetime object.  Arg Types: dt_in - datetime.datetime  start_of_day(date=None) Returns a a datetime.time object representing 12:00:00am. Returns full datetime.datetime object if a date is passed to it.  Arg Types: date - datetime.date  end_of_day(date=None) Returns a a datetime.time object representing 11:59:59pm. Returns full datetime.datetime object if a date is passed to it.  Arg Types: date - datetime.date  div_round(dividend, divisor) Divides two ints with proper rounding.  Arg Types: dividend - integer divisor - integer Â