Skip to main content

Networkday function like spreadsheet, plus job schedule

Project description

  • Business days calendar.

  • JobSchedule on business days.

Networkdays:

Return working days between two dates exclude weekends and holidays.

  • just like spreadsheets networdays function

  • exclude Holidays

  • Exclude “days off” per week.

Job schedule:

Calculate the period for a given job hours, based on Networdays.

Examples

Networkdays.networkdays()

import datetime
from networkdays import networkdays

HOLIDAYS  = { datetime.date(2020, 12, 25),}

days = networkdays.Networkdays(datetime.date(2020, 12, 1), datetime.date(2020, 12, 31), holidays=HOLIDAYS)

# you have methods to get holidays and weekends date list as well.
# here i just got the size of each set
print(f'''
Bussiness days: {len(days.networkdays())}
    {days.networkdays()[:2]}
    ...{days.networkdays()[-2:]}

Weekends:       {len(days.weekends())}
    {days.weekends()[:2]}
    ...{days.weekends()[-2:]}

Holidays:       {len(days.holidays())}
''')
Bussiness days: 22
    [datetime.date(2020, 12, 1), datetime.date(2020, 12, 2)]
    ...[datetime.date(2020, 12, 30), datetime.date(2020, 12, 31)]

Weekends:       8
    [datetime.date(2020, 12, 5), datetime.date(2020, 12, 6)]
    ...[datetime.date(2020, 12, 26), datetime.date(2020, 12, 27)]

Holidays:       1

Networkdays.jobschedule()

# jobSchedule
import datetime
from networkdays import networkdays

# Distribute the 600 hrs of effort, starting on december 1, 2020 working 8hrs per day.
jobschedule = networkdays.JobSchedule(600, 8, datetime.date(2020, 12, 1), networkdays=None)
job_dates = jobschedule.job_workdays()

# print results ...
print(f'''

bussines days:          {jobschedule.bussines_days}
calendar days:          {jobschedule.total_days}
starts - ends:          {jobschedule.prj_starts} - {jobschedule.prj_ends}

years:                  {list(jobschedule.years())}
months:                 {list(jobschedule.months())}
weeks (ISO):            {list(jobschedule.weeks())}

days:
    {list(jobschedule.days())[:2]} ...\n ...{list(jobschedule.days())[-2:]}

Works days dates on january:
    {list(jobschedule.days())[:2]} ...\n ...{list(jobschedule.days())[-2:]}
''')
bussines days:          54
calendar days:          73 days, 0:00:00
starts - ends:          12/01/20 - 02/12/21

years:                  [2020, 2021]
months:                 [12, 1, 2]
weeks (ISO):            [49, 50, 51, 52, 53, 1, 2, 3, 4, 5, 6]

days:
    [datetime.date(2020, 12, 1), datetime.date(2020, 12, 2)] ...
 ...[datetime.date(2021, 2, 11), datetime.date(2021, 2, 12)]

Works days dates on january:
    [datetime.date(2020, 12, 1), datetime.date(2020, 12, 2)] ...
 ...[datetime.date(2021, 2, 11), datetime.date(2021, 2, 12)]

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

python-networkdays-0.0.1.tar.gz (5.5 kB view hashes)

Uploaded Source

Built Distribution

python_networkdays-0.0.1-py3-none-any.whl (8.5 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page