Ваша проблема в том, что в этой базе данных есть неоднозначные даты. У него нет годовой информации.
NSDateFormatters не угадывает информацию о дате. Они создают даты из информации, которую вы предоставляете. И поскольку эта информация отсутствует, год будет 1970 (как в том же году, что и справочные данные).
Поскольку формат, сохраняемый в базе данных, полностью глуп, я предполагаю, что эти даты всегда находятся в течение следующих 365 дней. Таким образом, теоретически вам не нужно сохранять информацию за год.
Затем вы можете использовать что-то вроде этого, чтобы выяснить NSDate из этой совершенно неоднозначной информации о дате.
Идея состоит в том, чтобы перенести дату с 1970 года (созданную из вашей строки) на текущий год. И если это будет в прошлом для текущего года (например, сегодня 31 марта, дата с "Foo, 30 марта" будет в прошлом), перенесите его на следующий год.
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
dateFormatter.dateFormat = @"EEEE, MMMM d";
// the following line is important if you want that your code runs on device that are not english!
dateFormatter.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
NSDate *date = [dateFormatter dateFromString:@"Wednesday, March 30"];
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *components = [calendar components:NSMonthCalendarUnit|NSDayCalendarUnit fromDate:date];
NSDateComponents *todayComponent = [calendar components:NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit fromDate:[NSDate date]];
NSInteger proposedYear = [todayComponent year];
// if supposed date would be in the past for the current year move it into next year
if ([components month] < [todayComponent month]) {
proposedYear++;
}
if ([components month] == [todayComponent month] && [components day] < [todayComponent day]) {
proposedYear++;
}
[components setYear:proposedYear];
date = [calendar dateFromComponents:components];
// just for logging, so you are sure that you use the correct year:
[dateFormatter setDateFormat:@"EEEE, MMMM d yyyy"];
NSLog(@"%@", [dateFormatter stringFromDate:date]);