Revision: 28371 http://sourceforge.net/p/bibdesk/svn/28371 Author: hofman Date: 2023-09-23 15:30:32 +0000 (Sat, 23 Sep 2023) Log Message: ----------- Make sure Gregorian calendar is used for standard description of date. Use formatter to parse standard description date.
Modified Paths: -------------- trunk/bibdesk/BDSKCondition.m trunk/bibdesk/BibItem.m trunk/bibdesk/NSDate_BDSKExtensions.h trunk/bibdesk/NSDate_BDSKExtensions.m Modified: trunk/bibdesk/BDSKCondition.m =================================================================== --- trunk/bibdesk/BDSKCondition.m 2023-09-23 13:32:11 UTC (rev 28370) +++ trunk/bibdesk/BDSKCondition.m 2023-09-23 15:30:32 UTC (rev 28371) @@ -467,13 +467,13 @@ case BDSKDate: case BDSKAfterDate: case BDSKBeforeDate: - [self setDateValue:[NSDate dateWithString:newValue]]; + [self setDateValue:[NSDate dateWithStandardDescription:newValue]]; break; case BDSKInDateRange: values = [newValue componentsSeparatedByString:@" to "]; BDSKASSERT([values count] == 2); - [self setDateValue:[NSDate dateWithString:[values objectAtIndex:0]]]; - [self setToDateValue:[NSDate dateWithString:[values objectAtIndex:1]]]; + [self setDateValue:[NSDate dateWithStandardDescription:[values objectAtIndex:0]]]; + [self setToDateValue:[NSDate dateWithStandardDescription:[values objectAtIndex:1]]]; break; default: break; Modified: trunk/bibdesk/BibItem.m =================================================================== --- trunk/bibdesk/BibItem.m 2023-09-23 13:32:11 UTC (rev 28370) +++ trunk/bibdesk/BibItem.m 2023-09-23 15:30:32 UTC (rev 28371) @@ -4185,11 +4185,8 @@ if ([NSString isEmptyString:dateAddedValue]) { [self setDateAdded:nil]; } else { - theDate = [[NSDate alloc] initWithString:dateAddedValue]; - if (theDate == nil) - theDate = [[NSDate dateWithNaturalLanguageString:dateAddedValue] retain]; + theDate = [NSDate dateWithStandardDescription:dateAddedValue] ?: [NSDate dateWithNaturalLanguageString:dateAddedValue]; [self setDateAdded:theDate]; - [theDate release]; } NSString *dateModValue = [pubFields objectForKey:BDSKDateModifiedString]; @@ -4196,11 +4193,8 @@ if ([NSString isEmptyString:dateModValue]) { [self setDateModified:nil]; } else { - theDate = [[NSDate alloc] initWithString:dateModValue]; - if (theDate == nil) - theDate = [[NSDate dateWithNaturalLanguageString:dateModValue] retain]; + theDate = [NSDate dateWithStandardDescription:dateAddedValue] ?: [NSDate dateWithNaturalLanguageString:dateAddedValue]; [self setDateModified:theDate]; - [theDate release]; } } } Modified: trunk/bibdesk/NSDate_BDSKExtensions.h =================================================================== --- trunk/bibdesk/NSDate_BDSKExtensions.h 2023-09-23 13:32:11 UTC (rev 28370) +++ trunk/bibdesk/NSDate_BDSKExtensions.h 2023-09-23 15:30:32 UTC (rev 28371) @@ -53,6 +53,8 @@ + (NSDate *)dateWithMonth:(NSInteger)month year:(NSInteger)year; + (NSString *)formattedDateForMonth:(NSInteger)month year:(NSInteger)year; ++ (NSDate *)dateWithStandardDescription:(NSString *)string; + - (NSString *)dateDescription; - (NSString *)longDateDescription; - (NSString *)mediumDateDescription; Modified: trunk/bibdesk/NSDate_BDSKExtensions.m =================================================================== --- trunk/bibdesk/NSDate_BDSKExtensions.m 2023-09-23 13:32:11 UTC (rev 28370) +++ trunk/bibdesk/NSDate_BDSKExtensions.m 2023-09-23 15:30:32 UTC (rev 28371) @@ -41,6 +41,7 @@ #import "NSCharacterSet_BDSKExtensions.h" #import "BDSKComplexString.h" #import "BDSKStringNode.h" +#import "NSString_BDSKExtensions.h" @implementation NSDate (BDSKExtensions) @@ -64,10 +65,12 @@ } + (NSInteger)yearFromString:(NSString *)yearString { - if([yearString isComplex]) + if ([NSString isEmptyString:yearString]) + return 0; + if ([yearString isComplex]) yearString = [(BDSKStringNode *)[[yearString nodes] objectAtIndex:0] value]; NSInteger year = [yearString integerValue]; - if ([yearString length] <= 2) + if ([yearString length] == 2) year += year < 50 ? 2000 : 1900; return year; } @@ -141,6 +144,18 @@ return [NSString stringWithFormat:@"%ld", (long)year]; } ++ (NSDate *)dateWithStandardDescription:(NSString *)string { + static NSDateFormatter *formatter = nil; + if (formatter == nil) { + formatter = [[NSDateFormatter alloc] init]; + [formatter setFormatterBehavior:NSDateFormatterBehavior10_4]; + [formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss ZZZ"]; + [formatter setCalendar:gregorianCalendar()]; + [formatter setLenient:YES]; + } + return [formatter dateFromString:string]; +} + - (NSString *)dateDescription{ // Saturday, March 24, 2001 (full date format) static NSDateFormatter *formatter = nil; @@ -244,6 +259,7 @@ formatter = [[NSDateFormatter alloc] init]; [formatter setFormatterBehavior:NSDateFormatterBehavior10_4]; [formatter setDateFormat:@"EEE, dd MMM yyyy HH:mm:ss ZZZ"]; + [formatter setCalendar:gregorianCalendar()]; } return [formatter stringFromDate:self]; } @@ -255,6 +271,7 @@ formatter = [[NSDateFormatter alloc] init]; [formatter setFormatterBehavior:NSDateFormatterBehavior10_4]; [formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss ZZZ"]; + [formatter setCalendar:gregorianCalendar()]; } return [formatter stringFromDate:self]; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. _______________________________________________ Bibdesk-commit mailing list Bibdesk-commit@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/bibdesk-commit