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

Reply via email to