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