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
[email protected]
https://lists.sourceforge.net/lists/listinfo/bibdesk-commit