Finding Start week & end week

Last post 04-01-2009 12:26 PM by flyby35. 6 replies.

Sort Posts:

  • Finding Start week & end week

    03-23-2009, 4:13 PM
    • Member
      106 point Member
    • flyby35
    • Member since 09-02-2008, 6:25 PM
    • Posts 299

    I'm doing a timesheet web base codes in C#.  Our work week is from Thurs  to Wed.  I'm trying to find the best way how to find the Week start & week end base on users input

    If user input of any date value, the function should return the date of weekstart & the date of week end.
    For example, if user input March 8, 2009, the function will automatically return:  March 5 date as week start,  & March 11 date as week end

    I wrote a long function as below.  Does anyone know of the shorter way?

    Thanks

    DateTime beginweek = DateTime.Now;

    DateTime enterdate = DateTime.Now;

    enterdate = Convert.ToDateTime(txtDate.Text);if (enterdate.DayOfWeek.ToString() == "Wednesday")

    {

    beginweek = enterdate.AddDays(-2 * Convert.ToInt16(enterdate.DayOfWeek));

    DateTime endweek = enterdate.AddDays(-3 + Convert.ToInt16(enterdate.DayOfWeek));

    enterbeginweek.Text = beginweek.ToShortDateString();

    enterendweek.Text = endweek.ToShortDateString();

    }

    else if (enterdate.DayOfWeek.ToString() == "Tuesday")

    {

    beginweek = enterdate.AddDays(-7 +
    Convert.ToInt16(enterdate.DayOfWeek));DateTime endweek = enterdate.AddDays(-1 + Convert.ToInt16(enterdate.DayOfWeek));

    enterbeginweek.Text = beginweek.ToShortDateString();

    enterendweek.Text = endweek.ToShortDateString();

    }

    else if (enterdate.DayOfWeek.ToString() == "Monday")

    {

    beginweek = enterdate.AddDays(-4 *
    Convert.ToInt16(enterdate.DayOfWeek));DateTime endweek = enterdate.AddDays(2 * Convert.ToInt16(enterdate.DayOfWeek));

    enterbeginweek.Text = beginweek.ToShortDateString();

    enterendweek.Text = endweek.ToShortDateString();

    }

    else if (enterdate.DayOfWeek.ToString() == "Sunday")

    {

    beginweek = enterdate.AddDays(-3 +
    Convert.ToInt16(enterdate.DayOfWeek));DateTime endweek = enterdate.AddDays(3 + Convert.ToInt16(enterdate.DayOfWeek));

    enterbeginweek.Text = beginweek.ToShortDateString();

    enterendweek.Text = endweek.ToShortDateString();

    }

    else if (enterdate.DayOfWeek.ToString() == "Saturday")

    {

    beginweek = enterdate.AddDays(-8 +
    Convert.ToInt16(enterdate.DayOfWeek));DateTime endweek = enterdate.AddDays(-2 + Convert.ToInt16(enterdate.DayOfWeek));

    enterbeginweek.Text = beginweek.ToShortDateString();

    enterendweek.Text = endweek.ToShortDateString();

    }

    else if (enterdate.DayOfWeek.ToString() == "Friday")

    {

    beginweek = enterdate.AddDays(-6 +
    Convert.ToInt16(enterdate.DayOfWeek));DateTime endweek = enterdate.AddDays(1 * Convert.ToInt16(enterdate.DayOfWeek));

    enterbeginweek.Text = beginweek.ToShortDateString();

    enterendweek.Text = endweek.ToShortDateString();

    }

    else if (enterdate.DayOfWeek.ToString() == "Thursday")

    {

    beginweek = enterdate.AddDays(-4 +
    Convert.ToInt16(enterdate.DayOfWeek));DateTime endweek = enterdate.AddDays(2 + Convert.ToInt16(enterdate.DayOfWeek));

    enterbeginweek.Text = beginweek.ToShortDateString();

    enterendweek.Text = endweek.ToShortDateString();

    }

  • Re: Finding Start week & end week

    03-23-2009, 4:29 PM
    Answer
    • All-Star
      88,529 point All-Star
    • SGWellens
    • Member since 01-02-2007, 4:27 PM
    • Twin Cities, MN
    • Posts 7,236
    • Moderator
      TrustedFriends-MVPs

    I think we can do a little better:

     

        protected void Button1_Click(object sender, EventArgs e)
        {
            DateTime Test = new DateTime(2009, 3, 8);
    
            DateTime Start, End;
    
            GetWorkWeekDates(Test, out Start, out End);
        }
    
        // ---- GetWorkWeekDates -----------------------
    
        void GetWorkWeekDates(DateTime Input, out DateTime Start, out DateTime End)
        {
            while (Input.Date.DayOfWeek != DayOfWeek.Thursday)
                Input = Input.Date.AddDays(-1);
    
            Start = Input;
            End = Input.AddDays(6);
        }
    
     
    Steve Wellens

    My blog
  • Re: Finding Start week & end week

    03-23-2009, 5:04 PM
    • Member
      106 point Member
    • flyby35
    • Member since 09-02-2008, 6:25 PM
    • Posts 299

    I still don't understand your codes.  How do I get the week start date & the week end date from user input?

  • Re: Finding Start week & end week

    03-23-2009, 5:29 PM
    • Member
      176 point Member
    • shahk26
    • Member since 03-31-2005, 9:30 PM
    • Posts 75

    I think his code is incomplete. Essentially, it only checks for "Thursday". You still need to check for each day and get the start date and add 7 days to start date to get the end of the week date.

  • Re: Finding Start week & end week

    03-23-2009, 5:50 PM
    • All-Star
      88,529 point All-Star
    • SGWellens
    • Member since 01-02-2007, 4:27 PM
    • Twin Cities, MN
    • Posts 7,236
    • Moderator
      TrustedFriends-MVPs

    shahk26:

    I think his code is incomplete. Essentially, it only checks for "Thursday".

    No, the code is complete. 

    If you pass a date in, it returns two dates, the Thursday before the input date, and the Wednesday after the input date.

    shahk26:

    You still need to check for each day and get the start date and add 7 days to start date to get the end of the week date.

    I am adding 6 days, not 7, because the requirement is to get a Thursday to Wednesday span (not a Thursday to Thursday span).

    I included a test that shows that the function works.  Try it.

    Steve Wellens

    My blog
  • Re: Finding Start week & end week

    03-23-2009, 5:55 PM
    • Member
      176 point Member
    • shahk26
    • Member since 03-31-2005, 9:30 PM
    • Posts 75

    Yes, you are right , I did not see the "while" loop. My Bad :)

  • Re: Finding Start week & end week

    04-01-2009, 12:26 PM
    • Member
      106 point Member
    • flyby35
    • Member since 09-02-2008, 6:25 PM
    • Posts 299

    I just tried your codes, it works.

     Can you show me how to find the week # base on that codes?

Page 1 of 1 (7 items)