Revision: 28363
http://sourceforge.net/p/bibdesk/svn/28363
Author: hofman
Date: 2023-09-21 15:48:29 +0000 (Thu, 21 Sep 2023)
Log Message:
-----------
construct date from month and year from components
Modified Paths:
--------------
trunk/bibdesk/NSDate_BDSKExtensions.m
Modified: trunk/bibdesk/NSDate_BDSKExtensions.m
===================================================================
--- trunk/bibdesk/NSDate_BDSKExtensions.m 2023-09-21 09:37:58 UTC (rev
28362)
+++ trunk/bibdesk/NSDate_BDSKExtensions.m 2023-09-21 15:48:29 UTC (rev
28363)
@@ -141,9 +141,38 @@
if (start > 0 || end < [monthString length])
monthString = [monthString
substringWithRange:NSMakeRange(start, end - start)];
}
+ static NSCalendar *calendar = nil;
+ if (calendar == nil) {
+ calendar = [[NSCalendar alloc]
initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
+ [calendar setLocale:[NSLocale
localeWithLocaleIdentifier:@"en_US_POSIX"]];
+ }
if ([NSString isEmptyString:monthString])
monthString = @"1";
- return [self initWithMonthDayYearString:[NSString
stringWithFormat:@"%@-15-%@", monthString, yearString]];
+ NSInteger year = [yearString integerValue], month = 1;
+ if ([monthString length] <= 2 && [[NSCharacterSet
decimalDigitCharacterSet] characterIsMember:[monthString characterAtIndex:0]]) {
+ month = [monthString integerValue];
+ } else {
+ NSUInteger i = [[[calendar monthSymbols]
valueForKey:@"lowercaseString"] indexOfObject:[monthString lowercaseString]];
+ if (i == NSNotFound)
+ i = [[[calendar shortMonthSymbols]
valueForKey:@"lowercaseString"] indexOfObject:[monthString lowercaseString]];
+ month = i == NSNotFound ? 1 : i + 1;
+ }
+ if ([yearString length] <= 2) {
+ year += 2000;
+ if (year > [calendar component:NSCalendarUnitYear fromDate:[NSDate
date]])
+ year -= 100;
+ }
+ NSDateComponents *components = [[[NSDateComponents alloc] init]
autorelease];
+ [components setYear:year];
+ [components setMonth:month];
+ [components setDay:15];
+ [components setHour:12];
+ [components setMonth:0];
+ [components setSecond:0];
+ NSDate *date = [calendar dateFromComponents:components];
+ if (date == nil)
+ date = [self initWithMonthDayYearString:[NSString
stringWithFormat:@"%@-15-%@", monthString, yearString]];
+ 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