Here's a more elegant solution without all the parsing and with only a single method call:
Code:
+ (NSDate *)dateWithSQLString:(NSString *)string {
NSDate *date = [NSDate dateWithNaturalLanguageString:string];
if (!date) return nil;
NSCalendar *calendar = [[[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar] autorelease];
[calendar setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];
NSDateComponents *components = [calendar components:(
NSYearCalendarUnit |
NSMonthCalendarUnit |
NSDayCalendarUnit |
NSHourCalendarUnit |
NSMinuteCalendarUnit |
NSSecondCalendarUnit)
fromDate:date];
[calendar setTimeZone:[NSTimeZone defaultTimeZone]];
date = [calendar dateFromComponents:components];
return date;
}