From c3a4a276dd70c92a651a6fff6b515c9bc4a95637 Mon Sep 17 00:00:00 2001 From: Ge Erghon Laurus Date: Sat, 15 Feb 2020 23:46:39 +0000 Subject: [PATCH] Update TimeTool.cs Error creating a week instance at the beginning of the year, the start and end dates are wrong. Ex DateTime moment = new DateTime (2019, 1, 2); Console.WriteLine ("Date {0}:", moment.ToShortDateString ()); var w = new Week (moment); Console.WriteLine ("Week: {0} {1} - {2}", w, w.FirstDayOfWeek.DayOfWeek, w.LastDayOfWeek.DayOfWeek); // got: w / c 1 2019; 2019-01-01 - 2019-01-07 | 6.23: 59 Tuesday-Monday // expecting: Week: w / c 1 2019; 2019-01-01 - 2019-01-05 Sunday-Saturday --- TimePeriod/TimeTool.cs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/TimePeriod/TimeTool.cs b/TimePeriod/TimeTool.cs index 5267cf7..55b4f1c 100644 --- a/TimePeriod/TimeTool.cs +++ b/TimePeriod/TimeTool.cs @@ -349,7 +349,9 @@ public static DateTime GetStartOfYearWeek( int year, int weekOfYear, CultureInfo int currentYear; int currentWeek; GetWeekOfYear( dateTime, culture, weekRule, firstDayOfWeek, yearWeekType, out currentYear, out currentWeek ); - + + // get last week day of the week + DayOfWeek lastDayOfWeek = (DayOfWeek)(((int)firstDayOfWeek + TimeSpec.DaysPerWeek - 1) % TimeSpec.DaysPerWeek); // end date of week while ( currentWeek != weekOfYear ) @@ -358,8 +360,8 @@ public static DateTime GetStartOfYearWeek( int year, int weekOfYear, CultureInfo GetWeekOfYear( dateTime, culture, weekRule, firstDayOfWeek, yearWeekType, out currentYear, out currentWeek ); } - // end of previous week - while ( currentWeek == weekOfYear ) + // end of previous week => keep on going until got last week day + while (currentWeek == weekOfYear || dateTime.DayOfWeek != lastDayOfWeek) { dateTime = dateTime.AddDays( -1 ); GetWeekOfYear( dateTime, culture, weekRule, firstDayOfWeek, yearWeekType, out currentYear, out currentWeek );