x
• Status: Solved
• Priority: Medium
• Security: Public
• Views: 956

# Calculating Work Week Ranges

I have two things I wish to accomplish:

1)  Based on the current date determine the StartDate of the current Work Week  and the End Date of the current Work Week.

2)  Based on the current date generate a list of  the prior 10 work week ranges and the upcoming 10 work week ranges.

I would like to implement both of these as public methods within a class.  My language of choice is C#

0
DylanJones1
1 Solution

Commented:
It is simply math.

Assume that a week starts on Sunday and ends on SAtruday.  Then the formula is:

DateTime today = DateTime.Now.Date;
DateTime weekStart;
DateTime weekEnd;

// Calculate the start date

// End date can be calculated based on adding 6 days to weekStart or manually as:

As for the 10 work ranges, just do a loop subtracting 7 days from teh start date for each week range you want.
0

Commented:
There is one big problem with work week calculations. Observered holidays, see :http://www.codeproject.com/dotnet/HolidayCalculator.asp for that. After that work week is trivial.

0

Commented:
mrichmon seems to have the correct solution so please do not award any points to this comment. I just wanted to chime in and and say, this is how you do it in SQL just in case someone stumbles across this and wonders:

DECLARE @Today AS DATETIME
SET @Today = GETDATE()

SELECT DATEADD(wk, DATEDIFF(wk, 0, @Today), 0) AS Monday, DATEADD(wk, DATEDIFF(wk, 4, @Today), 4) AS Friday

Jason
0

Author Commented:
Want to thank you all for you quick input.  I guess the wrinkle I failed to communicate is that I need to determine the current range on any given day.

Given today  07/12/2006 the current date range is

Work week start date 07/10/2006   work week end date  07/15/2006 - we work saturdays :-(

So basically given the current date I need to determine the date of the prior monday and the date of the upcoming saturday.

0

Commented:
flashaoy,

It actually depends.  At least in all of the applications I have written or worked on a work week is a work week, regardless of holidays.  Now business days are a different matter.  A work week may or may not consist of 5 business days depending on holidays.

So my above is for a work week - not business days.
0

Commented:
Very easy.  My solution is for Suday to Satruday.

If you want Monday to Satureday then simply do: