Get date of first and last day of week knowing week number

后端 未结 8 2003
渐次进展
渐次进展 2020-12-16 20:24

I need to get the date of the first and last day of the week knowing the week number.

I get a start date and an end date, representing the first and last day of a s

8条回答
  •  情话喂你
    2020-12-16 21:15

    You can find the solution for how to get the first and last date of the current or last week as per the passed argument date and now you can also get the date of the first day and last day of the same week of the previous year.

    You can also change some settings to change your first weekday to get results as your need.

    Suppose your weekday starts from Monday except for Sunday, so what you need to do is that just change the switch cases and go on to get your desired result.

    public DateTime GetFirstDateOfCurrentWeek(DateTime dtDate)
    {
     //In this function we assumed that week start from sunday and end on saturday
        int no = 0;
        switch (dtDate.DayOfWeek.ToString())
        {
            case "Sunday":
                no = 0;
                break;
            case "Monday":
                no = 1;
                break;
            case "Tuesday":
                no = 2;
                break;
            case "Wednesday":
                no = 3;
                break;
            case "Thursday":
                no = 4;
                break;
            case "Friday":
                no = 5;
                break;
            case "Saturday":
                no = 6;
                break;
            default:
                no = 0;
                break;
        }
        return dtDate.AddDays(-no);
     }
    
    public DateTime GetLastDateOfCurrentWeek(DateTime dtDate)
    {
        int no = 0;
        switch (dtDate.DayOfWeek.ToString())
        {
            case "Saturday":
                no = 0;
                break;
            case "Friday":
                no = 1;
                break;
            case "Thursday":
                no = 2;
                break;
            case "Wednesday":
                no = 3;
                break;
            case "Tuesday":
                no = 4;
                break;
            case "Monday":
                no = 5;
                break;
            case "Sunday":
                no = 6;
                break;
            default:
                no = 0;
                break;
        }
        return dtDate.AddDays(no);
    }
    
    public DateTime GetFirstDateOfLastWeek(DateTime dtDate)
    {
        return GetFirstDateOfCurrentWeek(dtDate).AddDays(-7);
    }
    
    public DateTime GetLastDateOfLastWeek(DateTime dtDate)
    {
        return GetLastDateOfCurrentWeek(dtDate).AddDays(-7);
    }
    
    public DateTime GetFirstDateOfCurrentWeekOfPrvYear(DateTime dtDate)
    {
        int dayOfYear = dtDate.DayOfYear;
        DateTime firstDateOfThisYear = (Convert.ToDateTime("01/01/" + dtDate.Year.ToString()));
        DateTime firstDateofPrvYear = (firstDateOfThisYear.AddYears(-1));
        DateTime dateOfPrvYear = (firstDateofPrvYear.AddDays(dayOfYear));
    
        return GetFirstDateOfCurrentWeek(dateOfPrvYear);
    }
    
    public DateTime GetLastDateOfCurrentWeekOfPrvYear(DateTime dtDate)
    {
        int dayOfYear = dtDate.DayOfYear;
        DateTime firstDateOfThisYear = Convert.ToDateTime("01/01/" + dtDate.Year.ToString());
        DateTime firstDateofPrvYear = (firstDateOfThisYear.AddYears(-1));
        DateTime dateOfPrvYear = (firstDateofPrvYear.AddDays(dayOfYear));
    
        return GetLastDateOfCurrentWeek(dateOfPrvYear);
    }
    

    DateTime dt = Convert.ToDateTime("12/12/2019");

    int dayOfYear = dt.DayOfYear;
    string weekOfYear = (dt.DayOfYear / 7).ToString();
    string firstDateOfThisYear = (Convert.ToDateTime("01/01/" + dt.Year.ToString())).ToShortDateString();
    string firstDateofPrvYear = (Convert.ToDateTime(firstDateOfThisYear).AddYears(-1)).ToShortDateString();
    string dateOfPrvYear = (Convert.ToDateTime(firstDateofPrvYear).AddDays(dayOfYear)).ToShortDateString();
    string firstDateofWeekPrvYear = GetFirstDateOfCurrentWeek(Convert.ToDateTime(dateOfPrvYear)).ToShortDateString();
    string lastDateofWeekPrvYear = GetLastDateOfCurrentWeek(Convert.ToDateTime(dateOfPrvYear)).ToShortDateString();
    string weekOfPrvYear = (Convert.ToDateTime(dateOfPrvYear).DayOfYear / 7).ToString();
    
    MessageBox.Show("Day of Year: " + dayOfYear.ToString());
    MessageBox.Show("Week of Year: " + weekOfYear);
    MessageBox.Show("First day of this year: " + firstDateOfThisYear);
    MessageBox.Show("First day of prv year: " + firstDateofPrvYear);
    MessageBox.Show("Date of Prv Year: " + dateOfPrvYear);
    MessageBox.Show("First Date of Week Prv Year: " + firstDateofWeekPrvYear);
    MessageBox.Show("Last Date of Week Prv Year: " + lastDateofWeekPrvYear);
    MessageBox.Show("Day of Prv Year: " + weekOfPrvYear.ToString());
    

提交回复
热议问题