diff --git a/NEWS b/NEWS index baf40ee35..5edd37251 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,9 @@ +2.3.5 (2016-MM-DD) +------------------ + +Bug fixes + - properly compute the last week number for the year (#1010) + 2.3.4 (2015-12-15) ------------------ diff --git a/SoObjects/SOGo/SOGoUser.m b/SoObjects/SOGo/SOGoUser.m index d81dcf52c..129eb1910 100644 --- a/SoObjects/SOGo/SOGoUser.m +++ b/SoObjects/SOGo/SOGoUser.m @@ -514,15 +514,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; }