Revision: 28345
          http://sourceforge.net/p/bibdesk/svn/28345
Author:   hofman
Date:     2023-09-14 09:39:03 +0000 (Thu, 14 Sep 2023)
Log Message:
-----------
use week of month unit to get start of the week rather than week of year, as 
that uses the correct values at the start and end of the month, while week of 
year gets wrong values at the start and end of the year.

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

Modified: trunk/bibdesk/NSDate_BDSKExtensions.m
===================================================================
--- trunk/bibdesk/NSDate_BDSKExtensions.m       2023-09-13 22:54:39 UTC (rev 
28344)
+++ trunk/bibdesk/NSDate_BDSKExtensions.m       2023-09-14 09:39:03 UTC (rev 
28345)
@@ -268,21 +268,9 @@
 - (NSDate *)startOfPeriod:(BDSKPeriod)period {
     NSCalendar *calendar = [NSCalendar currentCalendar];
     NSUInteger unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit;
-    unitFlags |= period == BDSKPeriodWeek ? NSWeekOfYearCalendarUnit | 
NSWeekdayCalendarUnit : NSDayCalendarUnit;
+    unitFlags |= period == BDSKPeriodWeek ? NSWeekOfMonthCalendarUnit | 
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, or 52 
for the first week of the year
-    if (period == BDSKPeriodWeek && (([components weekOfYear] == 1 && 
[components month] > 1) || ([components month] == 1 && [components weekOfYear] 
> 6))) {
-        weekOffset = [[[NSDateComponents alloc] init] autorelease];
-        [weekOffset setWeekday:0];
-        [weekOffset setWeekOfYear:[components month] == 1 ? 1 : -1];
-        [weekOffset setDay:NSUndefinedDateComponent];
-        [weekOffset setMonth:NSUndefinedDateComponent];
-        [weekOffset setYear:0];
-        components = [calendar components:unitFlags fromDate:[calendar 
dateByAddingComponents:weekOffset toDate:self options:0]];
-        [weekOffset setWeekOfYear:-[weekOffset weekOfYear]];
-    }
     [components setHour:0];
     [components setMinute:0];
     [components setSecond:0];
@@ -292,7 +280,6 @@
             break;
         case BDSKPeriodWeek:
             [components setWeekday:[calendar firstWeekday]];
-            [components setMonth:NSUndefinedDateComponent];
             break;
         case BDSKPeriodMonth:
             [components setDay:1];
@@ -305,10 +292,7 @@
             NSLog(@"Unknown period %ld", (long)period);
             break;
     }
-    NSDate *date = [calendar dateFromComponents:components];
-    if (weekOffset)
-        date = [calendar dateByAddingComponents:weekOffset toDate:date 
options:0];
-    return date;
+    return [calendar dateFromComponents:components];
 }
 
 - (NSDate *)startOfPeriod:(BDSKPeriod)period byAdding:(NSInteger)offset {

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