Revision: 28343
          http://sourceforge.net/p/bibdesk/svn/28343
Author:   hofman
Date:     2023-09-13 22:51:58 +0000 (Wed, 13 Sep 2023)
Log Message:
-----------
workaround for start of week for first partial week of the year, which is 
wrongly set to 52 rather than 0

Modified Paths:
--------------
    trunk/bibdesk/NSDate_BDSKExtensions.m

Modified: trunk/bibdesk/NSDate_BDSKExtensions.m
===================================================================
--- trunk/bibdesk/NSDate_BDSKExtensions.m       2023-09-13 17:07:35 UTC (rev 
28342)
+++ trunk/bibdesk/NSDate_BDSKExtensions.m       2023-09-13 22:51:58 UTC (rev 
28343)
@@ -268,21 +268,31 @@
 - (NSDate *)startOfPeriod:(BDSKPeriod)period {
     NSCalendar *calendar = [NSCalendar currentCalendar];
     NSUInteger unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit;
-    unitFlags |= period == BDSKPeriodWeek ? NSWeekCalendarUnit : 
NSDayCalendarUnit;
+    unitFlags |= period == BDSKPeriodWeek ? NSWeekOfYearCalendarUnit | 
NSWeekdayCalendarUnit : NSDayCalendarUnit;
     NSDateComponents *components = [calendar components:unitFlags 
fromDate:self];
     NSDateComponents *weekOffset = nil;
     
-    // workaround for a known bug, week is 1 for last week of the year
-    if (period == BDSKPeriodWeek && [components weekOfYear] == 1 && 
[components month] > 1) {
-        components = [calendar components:unitFlags fromDate:[self 
dateByAddingTimeInterval:-7 * 24 * 3600]];
-        weekOffset = [[[NSDateComponents alloc] init] autorelease];
-        [weekOffset setWeekday:0];
-        [weekOffset setWeekOfYear:-1];
-        [weekOffset setDay:NSUndefinedDateComponent];
-        [weekOffset setMonth:NSUndefinedDateComponent];
-        [weekOffset setYear:0];
-        components = [calendar components:unitFlags fromDate:[calendar 
dateByAddingComponents:weekOffset toDate:self options:0]];
-        [weekOffset setWeekOfYear:1];
+    // workaround for a known bug, week is 1 for last week of the year, or 52 
for the first week of the year
+    if (period == BDSKPeriodWeek) {
+        if ([components weekOfYear] == 1 && [components month] > 1) {
+            weekOffset = [[[NSDateComponents alloc] init] autorelease];
+            [weekOffset setWeekday:0];
+            [weekOffset setWeekOfYear:-1];
+            [weekOffset setDay:NSUndefinedDateComponent];
+            [weekOffset setMonth:NSUndefinedDateComponent];
+            [weekOffset setYear:0];
+            components = [calendar components:unitFlags fromDate:[calendar 
dateByAddingComponents:weekOffset toDate:self options:0]];
+            [weekOffset setWeekOfYear:1];
+        } else if ([components month] == 1 && [components weekOfYear] > 6) {
+            weekOffset = [[[NSDateComponents alloc] init] autorelease];
+            [weekOffset setWeekday:0];
+            [weekOffset setWeekOfYear:1];
+            [weekOffset setDay:NSUndefinedDateComponent];
+            [weekOffset setMonth:NSUndefinedDateComponent];
+            [weekOffset setYear:0];
+            components = [calendar components:unitFlags fromDate:[calendar 
dateByAddingComponents:weekOffset toDate:self options:0]];
+            [weekOffset setWeekOfYear:-1];
+        }
     }
     [components setHour:0];
     [components setMinute:0];

This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.



_______________________________________________
Bibdesk-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/bibdesk-commit

Reply via email to