Created
November 4, 2013 21:01
-
-
Save akanieski/7309148 to your computer and use it in GitHub Desktop.
Business days between two dates
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
Taken from http://snipplr.com/view.php?codeview&id=4086 | |
*/ | |
function calcBusinessDays(dDate1, dDate2) { // input given as Date objects | |
var iWeeks, iDateDiff, iAdjust = 0; | |
if (dDate2 < dDate1) return -1; // error code if dates transposed | |
var iWeekday1 = dDate1.getDay(); // day of week | |
var iWeekday2 = dDate2.getDay(); | |
iWeekday1 = (iWeekday1 == 0) ? 7 : iWeekday1; // change Sunday from 0 to 7 | |
iWeekday2 = (iWeekday2 == 0) ? 7 : iWeekday2; | |
if ((iWeekday1 > 5) && (iWeekday2 > 5)) iAdjust = 1; // adjustment if both days on weekend | |
iWeekday1 = (iWeekday1 > 5) ? 5 : iWeekday1; // only count weekdays | |
iWeekday2 = (iWeekday2 > 5) ? 5 : iWeekday2; | |
// calculate differnece in weeks (1000mS * 60sec * 60min * 24hrs * 7 days = 604800000) | |
iWeeks = Math.floor((dDate2.getTime() - dDate1.getTime()) / 604800000) | |
if (iWeekday1 <= iWeekday2) { | |
iDateDiff = (iWeeks * 5) + (iWeekday2 - iWeekday1) | |
} else { | |
iDateDiff = ((iWeeks + 1) * 5) - (iWeekday1 - iWeekday2) | |
} | |
iDateDiff -= iAdjust // take into account both days on weekend | |
return (iDateDiff + 1); // add 1 because dates are inclusive | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment