Search code examples
c#datetimetimestamp

Get Monday's date every week in between two dates


How to get a Monday dates after every week in between from given start date and end date

For example

  • Start date : 28-12-2018
  • End date : 29-12-2019

So the following dates should be in the list

Monday     : 3-12-2018
Monday     : 14-01-2019
Monday     : 28-01-2019
Monday     : 11-02-2019

This my code: I am unable to find the every week in between from the range.how to identify dates that its from 1 week.

Any help will be appropriated

 DateTime startDate = LimitVmodel.StartDate;
 DateTime endDate = LimitVmodel.EndDate;

 TimeSpan diff = endDate - startDate;

 int days = diff.Days;

 for (long i = 0; i <= days; i++)
     // for (DateTime date = TIR.NetCore.PersianDateTime.ConvertShToM(LimitVmodel.StartDate); date <= TIR.NetCore.PersianDateTime.ConvertShToM(LimitVmodel.EndDate); date = date.AddDays((Double)Week))
 {
     DateTime date;
     date = startDate.AddDays(i);
     DateYear a = new DateYear();

     switch (LimitVmodel.Day)
     {
         case "Saturday":
              if (date.DayOfWeek == DayOfWeek.Saturday)
              {
                  allDates.Add(a);
              }
              break;

         case "Sunday":
              if (date.DayOfWeek == DayOfWeek.Sunday)
              {
                  allDates.Add(a);
              }
              break;

         case "Monday":
              if (date.DayOfWeek == DayOfWeek.Monday)
              {
                  allDates.Add(a);
              }
              break;
}

Solution

  • DateTime date = LimitVmodel.StartDate;
    
    switch (LimitVmodel) {
        case "Monday":
            while (date.DayOfWeek != DayOfWeek.Monday) {
                date = date.AddDays(1);
            }
        break;
        case "Tuesday":
            while (date.DayOfWeek != DayOfWeek.Tuesday) {
                date = date.AddDays(1);
            }
        break;
        //Etc...
    }
    AllDates.add(date);
    while (DateTime.compare(date, LimitVmodel.EndDate) <= 0) {
        date = date.AddDays(7);
        AllDates.add(date);
    }