Get all the dates of current week

10,260

Solution 1

You can try DateTimeFormat to find out current week's starting date and Linq to generate the string:

  DateTime startOfWeek = DateTime.Today.AddDays(
      (int) CultureInfo.CurrentCulture.DateTimeFormat.FirstDayOfWeek - 
      (int) DateTime.Today.DayOfWeek);

  string result = string.Join("," + Environment.NewLine, Enumerable
    .Range(0, 7)
    .Select(i => startOfWeek
       .AddDays(i)
       .ToString("dd-MMMM-yyyy")));

In case of en-US culture you'll get (week starts from Sunday)

26-March-2017,  // <- starts from Sunday
27-March-2017,
28-March-2017,
29-March-2017,
30-March-2017,
31-March-2017,
01-April-2017

In case of, say, ru-RU culture you'll get (week starts from Monday)

27-марта-2017,  // <- Starts from Monday
28-марта-2017,
29-марта-2017,
30-марта-2017,
31-марта-2017,
01-апреля-2017,
02-апреля-2017

Solution 2

Assuming that Sunday will be the start day of the week, as it is mentioned in the question I suggest following solution.

var today = DateTime.Now.Date; // This can be any date.

Console.WriteLine(today.DayOfWeek);

var day = (int)today.DayOfWeek; //Number of the day in week. (0 - Sunday, 1 - Monday... and so On)

Console.WriteLine(day);

const int totalDaysOfWeek = 7; // Number of days in a week stays constant.

for (var i = -day; i < -day + totalDaysOfWeek; i++)
{
     Console.WriteLine(today.AddDays(i).Date);
}

Solution 3

I found this here

 DayOfWeek Day = DateTime.Now.DayOfWeek;
 int Days = Day - DayOfWeek.Monday; //here you can set your Week Start Day
 DateTime WeekStartDate = DateTime.Now.AddDays(-Days);
 DateTime WeekEndDate1 = WeekStartDate.AddDays(1);
 DateTime WeekEndDate2 = WeekStartDate.AddDays(2);
 DateTime WeekEndDate3 = WeekStartDate.AddDays(3);
 DateTime WeekEndDate4 = WeekStartDate.AddDays(4);
 DateTime WeekEndDate5 = WeekStartDate.AddDays(5);
 DateTime WeekEndDate6 = WeekStartDate.AddDays(6);
Share:
10,260
user1890098
Author by

user1890098

Updated on June 25, 2022

Comments

  • user1890098
    user1890098 almost 2 years

    Say I consider Sunday - Saturday as a week, how do I get all the dates of the current week in c#?

    For example, current date is 30th March 2017, the output I need is,

    26-March-2017,
    27-March-2017,
    28-March-2017,
    29-March-2017,
    30-March-2017,
    31-March-2017,
    01-April-2017