Найдите последний четверг месяца между двумя датами C#
Я пытаюсь получить последний четверг каждого месяца между двумя днями. Некоторые из моих результатов верны, другие происходят с опозданием на день по пятницам. Ниже приведен мой код и результаты.
Любая помощь будет оценена по достоинству.
Что я уже пробовал:
public class BusinessWeekDays { public DateTime StartDateMonth; public DateTime EndMonth; } static void Main(string[] args) { var StartDate = DateTime.Parse("04/25/2019"); var SeriesEndDate = DateTime.Parse("09/30/2019"); var months = new List<businessweekdays>(); var Monthly = 1; for (var i = StartDate; i < SeriesEndDate; i = i.AddMonths(Monthly)) { const int thursday = 4; const int dayDiff = 7 - thursday; var Day = DateTime.DaysInMonth(i.Year, i.Month); var DayOfWeek = (int)new DateTime(i.Year, i.Month, Day).DayOfWeek; var _dtNew = new DateTime(i.Year, i.Month, Day).AddDays(-(DayOfWeek < thursday ? DayOfWeek + dayDiff : DayOfWeek - thursday)); var e = _dtNew.AddMonths(+1).AddDays(-2); months.Add(new BusinessWeekDays{ StartDateMonth = _dtNew, EndMonth = e}); Console.WriteLine(months); } } }
Результаты:
------------
[0] StartDateMonth {4/25/2019 12:00:00 AM} System.DateTime ----->Correct Date and Day EndMonth {5/23/2019 12:00:00 AM} System.DateTime [1] StartDateMonth {5/30/2019 12:00:00 AM} System.DateTime -----Incorrect Date and Day Friday EndMonth {6/28/2019 12:00:00 AM} System.DateTime [2] StartDateMonth {6/27/2019 12:00:00 AM} System.DateTime EndMonth {7/25/2019 12:00:00 AM} System.DateTime -----> Correct Date and day [3] StartDateMonth {7/25/2019 12:00:00 AM} System.DateTime EndMonth {8/23/2019 12:00:00 AM} System.DateTime ---Incorrect Date and day [4] StartDateMonth {8/29/2019 12:00:00 AM} System.DateTime EndMonth {9/27/2019 12:00:00 AM} System.DateTime ---- Incorrect Date and Day