Revision: 28342
          http://sourceforge.net/p/bibdesk/svn/28342
Author:   hofman
Date:     2023-09-13 17:07:35 +0000 (Wed, 13 Sep 2023)
Log Message:
-----------
use calendar for offset of date by one week for workaround

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

Modified: trunk/bibdesk/NSDate_BDSKExtensions.m
===================================================================
--- trunk/bibdesk/NSDate_BDSKExtensions.m       2023-09-13 16:23:42 UTC (rev 
28341)
+++ trunk/bibdesk/NSDate_BDSKExtensions.m       2023-09-13 17:07:35 UTC (rev 
28342)
@@ -270,12 +270,19 @@
     NSUInteger unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit;
     unitFlags |= period == BDSKPeriodWeek ? NSWeekCalendarUnit : 
NSDayCalendarUnit;
     NSDateComponents *components = [calendar components:unitFlags 
fromDate:self];
-    BOOL needsWorkaround = NO;
+    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]];
-        needsWorkaround = YES;
+        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];
@@ -300,8 +307,8 @@
             break;
     }
     NSDate *date = [calendar dateFromComponents:components];
-    if (needsWorkaround)
-        date = [date dateByAddingTimeInterval:7 * 24 * 3600];
+    if (weekOffset)
+        date = [calendar dateByAddingComponents:weekOffset toDate:date 
options:0];
     return date;
 }
 

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