From 711e159b4bf4693a4d3a32e03118625f338acfbe Mon Sep 17 00:00:00 2001 From: Francis Lachapelle Date: Tue, 22 Dec 2015 14:19:02 -0500 Subject: [PATCH] Properly compute the last week number for the year Fixes #1010 --- SoObjects/SOGo/SOGoUser.m | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/SoObjects/SOGo/SOGoUser.m b/SoObjects/SOGo/SOGoUser.m index 35883ddcf..4a57a1575 100644 --- a/SoObjects/SOGo/SOGoUser.m +++ b/SoObjects/SOGo/SOGoUser.m @@ -547,15 +547,26 @@ - (unsigned int) weekNumberForDate: (NSCalendarDate *) date { - NSCalendarDate *firstWeek; + NSCalendarDate *firstWeek, *previousWeek; unsigned int weekNumber; firstWeek = [self firstWeekOfYearForDate: date]; if ([firstWeek earlierDate: date] == firstWeek) - weekNumber = ([date timeIntervalSinceDate: firstWeek] - / (86400 * 7) + 1); + { + weekNumber = ([date timeIntervalSinceDate: firstWeek] / (86400 * 7) + 1); + } else - weekNumber = 0; + { + // Date is within the last week of the previous year; + // Compute the previous week number to find the week number of the requested date. + // The number will either be 52 or 53. + previousWeek = [date dateByAddingYears: 0 + months: 0 + days: -7]; + firstWeek = [self firstWeekOfYearForDate: previousWeek]; + weekNumber = ([previousWeek timeIntervalSinceDate: firstWeek] / (86400 * 7) + 1); + weekNumber += 1; + } return weekNumber; }