Repository files navigation

Workday date utility functions to extend datetime

Build Status

Synopsis

NETWORKDAYS(start_date,end_date,holidays,weekends)

WORKDAY(start_date,days,[holidays],(weekends))

Description

NETWORKDAYS(start_date,end_date,holidays,weekends)

Returns the number of whole working days between start_date and end_date (inclusive of both start_date and end_date). Working days exclude weekends and any dates identified in holidays.

Start_date is a date that represents the start date.

End_date is a date that represents the end date.

Holidays is an optional list of one or more dates to exclude from the working calendar, such as state and federal holidays and floating holidays. The holiday list should not have duplicates.

Weekends is an optional tuple of integers that correlate to the standard weekday numbers which defaults to (5,6) indicating Saturday and Sunday.

The function should work almost identically to the corresponding Networkdays function of Excel (Analysis ToolPak) when the default weekends (5,6) tuple is not overridden.

Note that just like in excel workday and networks days aren't "complimentary" i..e if wdays = networkdays(d1,d2) you cannot infer that workday(d1,wdays) = d2 given that networkdays is returning the # of working days inclusive of d1 and d2. Excel apparently has chosen to facilitate common use cases and not to make the functions complimentary. We have followed to obey excel's conventions as opposed to come up with our own. Also start_date has to be less than or equal to end_date

WORKDAY(start_date,days,[holidays],(weekends))

Returns a number that represents a date that is the indicated number of working days before or after a date (the starting date). Working days exclude weekends and any dates identified as holidays.

Start_date is a date that represents the start date.

Days is the number of nonweekend and nonholiday days before or after start_date. A positive value for days yields a future date; a negative value yields a past date.

Holidays is an optional list of one or more dates to exclude from the working calendar, such as state and federal holidays and floating holidays. The holiday list should not have duplicates.

Weekends is an optional tuple of integers that correlate to the standard weekday numbers which defaults to (5,6) indicating Saturday and Sunday.

The function should work almost identically to the corresponding Workday function of Excel (Analysis ToolPak)

This module has similarities with the BusinessHours module - you may want to check it out as well to see which one better fits your needs

Examples

>>> workday(date(year=2009,month=12,day=25),1, [ date(year=2009,month=12,day=25)
] )
datetime.date(2009, 12, 28)
>>> workday(date(year=2009,month=12,day=25),1, [ date(year=2009,month=12,day=26)
] )
datetime.date(2009, 12, 28)
>>> workday(date(year=2009,month=12,day=25),1, [ date(year=2009,month=12,day=28)
] )
datetime.date(2009, 12, 29)
>>> workday(date(year=2009,month=12,day=29),-1, [ date(year=2009,month=12,day=25
)] )
datetime.date(2009, 12, 28)
>>> workday(date(year=2009,month=12,day=28),-1, [ date(year=2009,month=12,day=25
)] )
datetime.date(2009, 12, 24)
>>> networkdays(date(2009, 12, 24),date(2009, 12, 28))
3
>>> networkdays(date(2009, 12, 24),date(2009, 12, 28), [ date(year=2009,month=12
,day=25)] )
2
>>> networkdays(date(2009, 12, 25),date(2009, 12, 28), [ date(year=2009,month=12
,day=25)] )
1
>>> networkdays(date(2009, 12, 25),date(2009, 12, 27), [ date(year=2009,month=12
,day=25)] )
0
>>> 

About

Extend python datetime with excel-like workday addition/subtraction functionality

Resources

Stars

75 stars

Watchers

7 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all \u003cpre\u003e\u003ccode\u003e blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks"); } } catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); } })(); (function(){ try { var __m = "github.com"; var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

Workday date utility functions to extend datetime

Build Status

Synopsis

NETWORKDAYS(start_date,end_date,holidays,weekends)

WORKDAY(start_date,days,[holidays],(weekends))

Description

NETWORKDAYS(start_date,end_date,holidays,weekends)

Returns the number of whole working days between start_date and end_date (inclusive of both start_date and end_date). Working days exclude weekends and any dates identified in holidays.

Start_date is a date that represents the start date.

End_date is a date that represents the end date.

Holidays is an optional list of one or more dates to exclude from the working calendar, such as state and federal holidays and floating holidays. The holiday list should not have duplicates.

Weekends is an optional tuple of integers that correlate to the standard weekday numbers which defaults to (5,6) indicating Saturday and Sunday.

The function should work almost identically to the corresponding Networkdays function of Excel (Analysis ToolPak) when the default weekends (5,6) tuple is not overridden.

Note that just like in excel workday and networks days aren't "complimentary" i..e if wdays = networkdays(d1,d2) you cannot infer that workday(d1,wdays) = d2 given that networkdays is returning the # of working days inclusive of d1 and d2. Excel apparently has chosen to facilitate common use cases and not to make the functions complimentary. We have followed to obey excel's conventions as opposed to come up with our own. Also start_date has to be less than or equal to end_date

WORKDAY(start_date,days,[holidays],(weekends))

Returns a number that represents a date that is the indicated number of working days before or after a date (the starting date). Working days exclude weekends and any dates identified as holidays.

Start_date is a date that represents the start date.

Days is the number of nonweekend and nonholiday days before or after start_date. A positive value for days yields a future date; a negative value yields a past date.

Holidays is an optional list of one or more dates to exclude from the working calendar, such as state and federal holidays and floating holidays. The holiday list should not have duplicates.

Weekends is an optional tuple of integers that correlate to the standard weekday numbers which defaults to (5,6) indicating Saturday and Sunday.

The function should work almost identically to the corresponding Workday function of Excel (Analysis ToolPak)

This module has similarities with the BusinessHours module - you may want to check it out as well to see which one better fits your needs

Examples

>>> workday(date(year=2009,month=12,day=25),1, [ date(year=2009,month=12,day=25)
] )
datetime.date(2009, 12, 28)
>>> workday(date(year=2009,month=12,day=25),1, [ date(year=2009,month=12,day=26)
] )
datetime.date(2009, 12, 28)
>>> workday(date(year=2009,month=12,day=25),1, [ date(year=2009,month=12,day=28)
] )
datetime.date(2009, 12, 29)
>>> workday(date(year=2009,month=12,day=29),-1, [ date(year=2009,month=12,day=25
)] )
datetime.date(2009, 12, 28)
>>> workday(date(year=2009,month=12,day=28),-1, [ date(year=2009,month=12,day=25
)] )
datetime.date(2009, 12, 24)
>>> networkdays(date(2009, 12, 24),date(2009, 12, 28))
3
>>> networkdays(date(2009, 12, 24),date(2009, 12, 28), [ date(year=2009,month=12
,day=25)] )
2
>>> networkdays(date(2009, 12, 25),date(2009, 12, 28), [ date(year=2009,month=12
,day=25)] )
1
>>> networkdays(date(2009, 12, 25),date(2009, 12, 27), [ date(year=2009,month=12
,day=25)] )
0
>>> 

About

Extend python datetime with excel-like workday addition/subtraction functionality

Resources

Stars

75 stars

Watchers

7 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Workday date utility functions to extend datetime

Build Status

Synopsis

NETWORKDAYS(start_date,end_date,holidays,weekends)

WORKDAY(start_date,days,[holidays],(weekends))

Description

NETWORKDAYS(start_date,end_date,holidays,weekends)

Returns the number of whole working days between start_date and end_date (inclusive of both start_date and end_date). Working days exclude weekends and any dates identified in holidays.

Start_date is a date that represents the start date.

End_date is a date that represents the end date.

Holidays is an optional list of one or more dates to exclude from the working calendar, such as state and federal holidays and floating holidays. The holiday list should not have duplicates.

Weekends is an optional tuple of integers that correlate to the standard weekday numbers which defaults to (5,6) indicating Saturday and Sunday.

The function should work almost identically to the corresponding Networkdays function of Excel (Analysis ToolPak) when the default weekends (5,6) tuple is not overridden.

Note that just like in excel workday and networks days aren't "complimentary" i..e if wdays = networkdays(d1,d2) you cannot infer that workday(d1,wdays) = d2 given that networkdays is returning the # of working days inclusive of d1 and d2. Excel apparently has chosen to facilitate common use cases and not to make the functions complimentary. We have followed to obey excel's conventions as opposed to come up with our own. Also start_date has to be less than or equal to end_date

WORKDAY(start_date,days,[holidays],(weekends))

Returns a number that represents a date that is the indicated number of working days before or after a date (the starting date). Working days exclude weekends and any dates identified as holidays.

Start_date is a date that represents the start date.

Days is the number of nonweekend and nonholiday days before or after start_date. A positive value for days yields a future date; a negative value yields a past date.

Holidays is an optional list of one or more dates to exclude from the working calendar, such as state and federal holidays and floating holidays. The holiday list should not have duplicates.

Weekends is an optional tuple of integers that correlate to the standard weekday numbers which defaults to (5,6) indicating Saturday and Sunday.

The function should work almost identically to the corresponding Workday function of Excel (Analysis ToolPak)

This module has similarities with the BusinessHours module - you may want to check it out as well to see which one better fits your needs

Examples

>>> workday(date(year=2009,month=12,day=25),1, [ date(year=2009,month=12,day=25)
] )
datetime.date(2009, 12, 28)
>>> workday(date(year=2009,month=12,day=25),1, [ date(year=2009,month=12,day=26)
] )
datetime.date(2009, 12, 28)
>>> workday(date(year=2009,month=12,day=25),1, [ date(year=2009,month=12,day=28)
] )
datetime.date(2009, 12, 29)
>>> workday(date(year=2009,month=12,day=29),-1, [ date(year=2009,month=12,day=25
)] )
datetime.date(2009, 12, 28)
>>> workday(date(year=2009,month=12,day=28),-1, [ date(year=2009,month=12,day=25
)] )
datetime.date(2009, 12, 24)
>>> networkdays(date(2009, 12, 24),date(2009, 12, 28))
3
>>> networkdays(date(2009, 12, 24),date(2009, 12, 28), [ date(year=2009,month=12
,day=25)] )
2
>>> networkdays(date(2009, 12, 25),date(2009, 12, 28), [ date(year=2009,month=12
,day=25)] )
1
>>> networkdays(date(2009, 12, 25),date(2009, 12, 27), [ date(year=2009,month=12
,day=25)] )
0
>>> 

About

Extend python datetime with excel-like workday addition/subtraction functionality

Resources

Stars

75 stars

Watchers

7 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length \u003e 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Workday date utility functions to extend datetime

Build Status

Synopsis

NETWORKDAYS(start_date,end_date,holidays,weekends)

WORKDAY(start_date,days,[holidays],(weekends))

Description

NETWORKDAYS(start_date,end_date,holidays,weekends)

Returns the number of whole working days between start_date and end_date (inclusive of both start_date and end_date). Working days exclude weekends and any dates identified in holidays.

Start_date is a date that represents the start date.

End_date is a date that represents the end date.

Holidays is an optional list of one or more dates to exclude from the working calendar, such as state and federal holidays and floating holidays. The holiday list should not have duplicates.

Weekends is an optional tuple of integers that correlate to the standard weekday numbers which defaults to (5,6) indicating Saturday and Sunday.

The function should work almost identically to the corresponding Networkdays function of Excel (Analysis ToolPak) when the default weekends (5,6) tuple is not overridden.

Note that just like in excel workday and networks days aren't "complimentary" i..e if wdays = networkdays(d1,d2) you cannot infer that workday(d1,wdays) = d2 given that networkdays is returning the # of working days inclusive of d1 and d2. Excel apparently has chosen to facilitate common use cases and not to make the functions complimentary. We have followed to obey excel's conventions as opposed to come up with our own. Also start_date has to be less than or equal to end_date

WORKDAY(start_date,days,[holidays],(weekends))

Returns a number that represents a date that is the indicated number of working days before or after a date (the starting date). Working days exclude weekends and any dates identified as holidays.

Start_date is a date that represents the start date.

Days is the number of nonweekend and nonholiday days before or after start_date. A positive value for days yields a future date; a negative value yields a past date.

Holidays is an optional list of one or more dates to exclude from the working calendar, such as state and federal holidays and floating holidays. The holiday list should not have duplicates.

Weekends is an optional tuple of integers that correlate to the standard weekday numbers which defaults to (5,6) indicating Saturday and Sunday.

The function should work almost identically to the corresponding Workday function of Excel (Analysis ToolPak)

This module has similarities with the BusinessHours module - you may want to check it out as well to see which one better fits your needs

Examples

>>> workday(date(year=2009,month=12,day=25),1, [ date(year=2009,month=12,day=25)
] )
datetime.date(2009, 12, 28)
>>> workday(date(year=2009,month=12,day=25),1, [ date(year=2009,month=12,day=26)
] )
datetime.date(2009, 12, 28)
>>> workday(date(year=2009,month=12,day=25),1, [ date(year=2009,month=12,day=28)
] )
datetime.date(2009, 12, 29)
>>> workday(date(year=2009,month=12,day=29),-1, [ date(year=2009,month=12,day=25
)] )
datetime.date(2009, 12, 28)
>>> workday(date(year=2009,month=12,day=28),-1, [ date(year=2009,month=12,day=25
)] )
datetime.date(2009, 12, 24)
>>> networkdays(date(2009, 12, 24),date(2009, 12, 28))
3
>>> networkdays(date(2009, 12, 24),date(2009, 12, 28), [ date(year=2009,month=12
,day=25)] )
2
>>> networkdays(date(2009, 12, 25),date(2009, 12, 28), [ date(year=2009,month=12
,day=25)] )
1
>>> networkdays(date(2009, 12, 25),date(2009, 12, 27), [ date(year=2009,month=12
,day=25)] )
0
>>> 

About

Extend python datetime with excel-like workday addition/subtraction functionality

Resources

Stars

75 stars

Watchers

7 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

Workday date utility functions to extend datetime

Build Status

Synopsis

NETWORKDAYS(start_date,end_date,holidays,weekends)

WORKDAY(start_date,days,[holidays],(weekends))

Description

NETWORKDAYS(start_date,end_date,holidays,weekends)

Returns the number of whole working days between start_date and end_date (inclusive of both start_date and end_date). Working days exclude weekends and any dates identified in holidays.

Start_date is a date that represents the start date.

End_date is a date that represents the end date.

Holidays is an optional list of one or more dates to exclude from the working calendar, such as state and federal holidays and floating holidays. The holiday list should not have duplicates.

Weekends is an optional tuple of integers that correlate to the standard weekday numbers which defaults to (5,6) indicating Saturday and Sunday.

The function should work almost identically to the corresponding Networkdays function of Excel (Analysis ToolPak) when the default weekends (5,6) tuple is not overridden.

Note that just like in excel workday and networks days aren't "complimentary" i..e if wdays = networkdays(d1,d2) you cannot infer that workday(d1,wdays) = d2 given that networkdays is returning the # of working days inclusive of d1 and d2. Excel apparently has chosen to facilitate common use cases and not to make the functions complimentary. We have followed to obey excel's conventions as opposed to come up with our own. Also start_date has to be less than or equal to end_date

WORKDAY(start_date,days,[holidays],(weekends))

Returns a number that represents a date that is the indicated number of working days before or after a date (the starting date). Working days exclude weekends and any dates identified as holidays.

Start_date is a date that represents the start date.

Days is the number of nonweekend and nonholiday days before or after start_date. A positive value for days yields a future date; a negative value yields a past date.

Holidays is an optional list of one or more dates to exclude from the working calendar, such as state and federal holidays and floating holidays. The holiday list should not have duplicates.

Weekends is an optional tuple of integers that correlate to the standard weekday numbers which defaults to (5,6) indicating Saturday and Sunday.

The function should work almost identically to the corresponding Workday function of Excel (Analysis ToolPak)

This module has similarities with the BusinessHours module - you may want to check it out as well to see which one better fits your needs

Examples

>>> workday(date(year=2009,month=12,day=25),1, [ date(year=2009,month=12,day=25)
] )
datetime.date(2009, 12, 28)
>>> workday(date(year=2009,month=12,day=25),1, [ date(year=2009,month=12,day=26)
] )
datetime.date(2009, 12, 28)
>>> workday(date(year=2009,month=12,day=25),1, [ date(year=2009,month=12,day=28)
] )
datetime.date(2009, 12, 29)
>>> workday(date(year=2009,month=12,day=29),-1, [ date(year=2009,month=12,day=25
)] )
datetime.date(2009, 12, 28)
>>> workday(date(year=2009,month=12,day=28),-1, [ date(year=2009,month=12,day=25
)] )
datetime.date(2009, 12, 24)
>>> networkdays(date(2009, 12, 24),date(2009, 12, 28))
3
>>> networkdays(date(2009, 12, 24),date(2009, 12, 28), [ date(year=2009,month=12
,day=25)] )
2
>>> networkdays(date(2009, 12, 25),date(2009, 12, 28), [ date(year=2009,month=12
,day=25)] )
1
>>> networkdays(date(2009, 12, 25),date(2009, 12, 27), [ date(year=2009,month=12
,day=25)] )
0
>>> 

About

Extend python datetime with excel-like workday addition/subtraction functionality

Resources

Stars

75 stars

Watchers

7 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Workday date utility functions to extend datetime

Build Status

Synopsis

NETWORKDAYS(start_date,end_date,holidays,weekends)

WORKDAY(start_date,days,[holidays],(weekends))

Description

NETWORKDAYS(start_date,end_date,holidays,weekends)

Returns the number of whole working days between start_date and end_date (inclusive of both start_date and end_date). Working days exclude weekends and any dates identified in holidays.

Start_date is a date that represents the start date.

End_date is a date that represents the end date.

Holidays is an optional list of one or more dates to exclude from the working calendar, such as state and federal holidays and floating holidays. The holiday list should not have duplicates.

Weekends is an optional tuple of integers that correlate to the standard weekday numbers which defaults to (5,6) indicating Saturday and Sunday.

The function should work almost identically to the corresponding Networkdays function of Excel (Analysis ToolPak) when the default weekends (5,6) tuple is not overridden.

Note that just like in excel workday and networks days aren't "complimentary" i..e if wdays = networkdays(d1,d2) you cannot infer that workday(d1,wdays) = d2 given that networkdays is returning the # of working days inclusive of d1 and d2. Excel apparently has chosen to facilitate common use cases and not to make the functions complimentary. We have followed to obey excel's conventions as opposed to come up with our own. Also start_date has to be less than or equal to end_date

WORKDAY(start_date,days,[holidays],(weekends))

Returns a number that represents a date that is the indicated number of working days before or after a date (the starting date). Working days exclude weekends and any dates identified as holidays.

Start_date is a date that represents the start date.

Days is the number of nonweekend and nonholiday days before or after start_date. A positive value for days yields a future date; a negative value yields a past date.

Holidays is an optional list of one or more dates to exclude from the working calendar, such as state and federal holidays and floating holidays. The holiday list should not have duplicates.

Weekends is an optional tuple of integers that correlate to the standard weekday numbers which defaults to (5,6) indicating Saturday and Sunday.

The function should work almost identically to the corresponding Workday function of Excel (Analysis ToolPak)

This module has similarities with the BusinessHours module - you may want to check it out as well to see which one better fits your needs

Examples

>>> workday(date(year=2009,month=12,day=25),1, [ date(year=2009,month=12,day=25)
] )
datetime.date(2009, 12, 28)
>>> workday(date(year=2009,month=12,day=25),1, [ date(year=2009,month=12,day=26)
] )
datetime.date(2009, 12, 28)
>>> workday(date(year=2009,month=12,day=25),1, [ date(year=2009,month=12,day=28)
] )
datetime.date(2009, 12, 29)
>>> workday(date(year=2009,month=12,day=29),-1, [ date(year=2009,month=12,day=25
)] )
datetime.date(2009, 12, 28)
>>> workday(date(year=2009,month=12,day=28),-1, [ date(year=2009,month=12,day=25
)] )
datetime.date(2009, 12, 24)
>>> networkdays(date(2009, 12, 24),date(2009, 12, 28))
3
>>> networkdays(date(2009, 12, 24),date(2009, 12, 28), [ date(year=2009,month=12
,day=25)] )
2
>>> networkdays(date(2009, 12, 25),date(2009, 12, 28), [ date(year=2009,month=12
,day=25)] )
1
>>> networkdays(date(2009, 12, 25),date(2009, 12, 27), [ date(year=2009,month=12
,day=25)] )
0
>>> 

About

Extend python datetime with excel-like workday addition/subtraction functionality

Resources

Stars

75 stars

Watchers

7 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Workday date utility functions to extend datetime

Build Status

Synopsis

NETWORKDAYS(start_date,end_date,holidays,weekends)

WORKDAY(start_date,days,[holidays],(weekends))

Description

NETWORKDAYS(start_date,end_date,holidays,weekends)

Returns the number of whole working days between start_date and end_date (inclusive of both start_date and end_date). Working days exclude weekends and any dates identified in holidays.

Start_date is a date that represents the start date.

End_date is a date that represents the end date.

Holidays is an optional list of one or more dates to exclude from the working calendar, such as state and federal holidays and floating holidays. The holiday list should not have duplicates.

Weekends is an optional tuple of integers that correlate to the standard weekday numbers which defaults to (5,6) indicating Saturday and Sunday.

The function should work almost identically to the corresponding Networkdays function of Excel (Analysis ToolPak) when the default weekends (5,6) tuple is not overridden.

Note that just like in excel workday and networks days aren't "complimentary" i..e if wdays = networkdays(d1,d2) you cannot infer that workday(d1,wdays) = d2 given that networkdays is returning the # of working days inclusive of d1 and d2. Excel apparently has chosen to facilitate common use cases and not to make the functions complimentary. We have followed to obey excel's conventions as opposed to come up with our own. Also start_date has to be less than or equal to end_date

WORKDAY(start_date,days,[holidays],(weekends))

Returns a number that represents a date that is the indicated number of working days before or after a date (the starting date). Working days exclude weekends and any dates identified as holidays.

Start_date is a date that represents the start date.

Days is the number of nonweekend and nonholiday days before or after start_date. A positive value for days yields a future date; a negative value yields a past date.

Holidays is an optional list of one or more dates to exclude from the working calendar, such as state and federal holidays and floating holidays. The holiday list should not have duplicates.

Weekends is an optional tuple of integers that correlate to the standard weekday numbers which defaults to (5,6) indicating Saturday and Sunday.

The function should work almost identically to the corresponding Workday function of Excel (Analysis ToolPak)

This module has similarities with the BusinessHours module - you may want to check it out as well to see which one better fits your needs

Examples

>>> workday(date(year=2009,month=12,day=25),1, [ date(year=2009,month=12,day=25)
] )
datetime.date(2009, 12, 28)
>>> workday(date(year=2009,month=12,day=25),1, [ date(year=2009,month=12,day=26)
] )
datetime.date(2009, 12, 28)
>>> workday(date(year=2009,month=12,day=25),1, [ date(year=2009,month=12,day=28)
] )
datetime.date(2009, 12, 29)
>>> workday(date(year=2009,month=12,day=29),-1, [ date(year=2009,month=12,day=25
)] )
datetime.date(2009, 12, 28)
>>> workday(date(year=2009,month=12,day=28),-1, [ date(year=2009,month=12,day=25
)] )
datetime.date(2009, 12, 24)
>>> networkdays(date(2009, 12, 24),date(2009, 12, 28))
3
>>> networkdays(date(2009, 12, 24),date(2009, 12, 28), [ date(year=2009,month=12
,day=25)] )
2
>>> networkdays(date(2009, 12, 25),date(2009, 12, 28), [ date(year=2009,month=12
,day=25)] )
1
>>> networkdays(date(2009, 12, 25),date(2009, 12, 27), [ date(year=2009,month=12
,day=25)] )
0
>>> 

About

Extend python datetime with excel-like workday addition/subtraction functionality

Resources

Stars

75 stars

Watchers

7 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

Workday date utility functions to extend datetime

Build Status

Synopsis

NETWORKDAYS(start_date,end_date,holidays,weekends)

WORKDAY(start_date,days,[holidays],(weekends))

Description

NETWORKDAYS(start_date,end_date,holidays,weekends)

Returns the number of whole working days between start_date and end_date (inclusive of both start_date and end_date). Working days exclude weekends and any dates identified in holidays.

Start_date is a date that represents the start date.

End_date is a date that represents the end date.

Holidays is an optional list of one or more dates to exclude from the working calendar, such as state and federal holidays and floating holidays. The holiday list should not have duplicates.

Weekends is an optional tuple of integers that correlate to the standard weekday numbers which defaults to (5,6) indicating Saturday and Sunday.

The function should work almost identically to the corresponding Networkdays function of Excel (Analysis ToolPak) when the default weekends (5,6) tuple is not overridden.

Note that just like in excel workday and networks days aren't "complimentary" i..e if wdays = networkdays(d1,d2) you cannot infer that workday(d1,wdays) = d2 given that networkdays is returning the # of working days inclusive of d1 and d2. Excel apparently has chosen to facilitate common use cases and not to make the functions complimentary. We have followed to obey excel's conventions as opposed to come up with our own. Also start_date has to be less than or equal to end_date

WORKDAY(start_date,days,[holidays],(weekends))

Returns a number that represents a date that is the indicated number of working days before or after a date (the starting date). Working days exclude weekends and any dates identified as holidays.

Start_date is a date that represents the start date.

Days is the number of nonweekend and nonholiday days before or after start_date. A positive value for days yields a future date; a negative value yields a past date.

Holidays is an optional list of one or more dates to exclude from the working calendar, such as state and federal holidays and floating holidays. The holiday list should not have duplicates.

Weekends is an optional tuple of integers that correlate to the standard weekday numbers which defaults to (5,6) indicating Saturday and Sunday.

The function should work almost identically to the corresponding Workday function of Excel (Analysis ToolPak)

This module has similarities with the BusinessHours module - you may want to check it out as well to see which one better fits your needs

Examples

>>> workday(date(year=2009,month=12,day=25),1, [ date(year=2009,month=12,day=25)
] )
datetime.date(2009, 12, 28)
>>> workday(date(year=2009,month=12,day=25),1, [ date(year=2009,month=12,day=26)
] )
datetime.date(2009, 12, 28)
>>> workday(date(year=2009,month=12,day=25),1, [ date(year=2009,month=12,day=28)
] )
datetime.date(2009, 12, 29)
>>> workday(date(year=2009,month=12,day=29),-1, [ date(year=2009,month=12,day=25
)] )
datetime.date(2009, 12, 28)
>>> workday(date(year=2009,month=12,day=28),-1, [ date(year=2009,month=12,day=25
)] )
datetime.date(2009, 12, 24)
>>> networkdays(date(2009, 12, 24),date(2009, 12, 28))
3
>>> networkdays(date(2009, 12, 24),date(2009, 12, 28), [ date(year=2009,month=12
,day=25)] )
2
>>> networkdays(date(2009, 12, 25),date(2009, 12, 28), [ date(year=2009,month=12
,day=25)] )
1
>>> networkdays(date(2009, 12, 25),date(2009, 12, 27), [ date(year=2009,month=12
,day=25)] )
0
>>> 

About

Extend python datetime with excel-like workday addition/subtraction functionality

Resources

Stars

75 stars

Watchers

7 watching

Forks

Releases

Packages

Used by

Contributors

Languages