Revision: 28347
http://sourceforge.net/p/bibdesk/svn/28347
Author: hofman
Date: 2023-09-14 21:47:53 +0000 (Thu, 14 Sep 2023)
Log Message:
-----------
Add periods to date after getting start of period, so we can be sure we don't
overflow.
Modified Paths:
--------------
trunk/bibdesk/NSDate_BDSKExtensions.m
Modified: trunk/bibdesk/NSDate_BDSKExtensions.m
===================================================================
--- trunk/bibdesk/NSDate_BDSKExtensions.m 2023-09-14 14:54:50 UTC (rev
28346)
+++ trunk/bibdesk/NSDate_BDSKExtensions.m 2023-09-14 21:47:53 UTC (rev
28347)
@@ -265,7 +265,7 @@
return [formatter stringFromDate:self];
}
-- (NSDate *)startOfPeriod:(BDSKPeriod)period {
+- (NSDate *)startOfPeriod:(BDSKPeriod)period byAdding:(NSInteger)offset {
NSCalendar *calendar = [NSCalendar currentCalendar];
NSUInteger unitFlags;
if (period == BDSKPeriodWeek)
@@ -295,40 +295,37 @@
NSLog(@"Unknown period %ld", (long)period);
break;
}
- return [calendar dateFromComponents:components];
-}
-
-- (NSDate *)startOfPeriod:(BDSKPeriod)period byAdding:(NSInteger)offset {
- NSDate *date = self;
+
+ NSDate *date = [calendar dateFromComponents:components];
+
if (offset != 0) {
- NSDateComponents *components = [[NSDateComponents alloc] init];
- [components setDay:0];
- [components setMonth:0];
- [components setYear:0];
+ NSCalendarUnit unit = 0;
switch (period) {
case BDSKPeriodDay:
- [components setDay:offset];
+ unit = NSCalendarUnitDay;
break;
case BDSKPeriodWeek:
- [components setWeekday:0];
- [components setWeekOfYear:offset];
- [components setDay:NSDateComponentUndefined];
- [components setMonth:NSDateComponentUndefined];
+ unit = NSCalendarUnitWeekOfYear;
break;
case BDSKPeriodMonth:
- [components setMonth:offset];
+ unit = NSCalendarUnitMonth;
break;
case BDSKPeriodYear:
- [components setYear:offset];
+ unit = NSCalendarUnitYear;
break;
default:
NSLog(@"Unknown period %ld", (long)period);
break;
}
- date = [[NSCalendar currentCalendar] dateByAddingComponents:components
toDate:self options:0];
- [components release];
+ if (unit != 0)
+ date = [calendar dateByAddingUnit:unit value:offset toDate:date
options:0];
}
- return [date startOfPeriod:period];
+
+ return date;
}
+- (NSDate *)startOfPeriod:(BDSKPeriod)period {
+ return [self startOfPeriod:period byAdding:0];
+}
+
@end
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