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