Я использую следующий фрагмент кода, чтобы найти разницу между двумя датами, и результат выключен на один день:
NSString * dateString = @"2011-11-26" ;
NSDateFormatter * dateFormatter = [[NSDateFormatter alloc]init];
[dateFormatter setDateFormat:@"yyyy-MM-dd"];
NSDate * today = [[NSDate alloc] init];
NSDate * futureDate = [dateFormatter dateFromString:dateString];;
NSCalendar * gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSUInteger unitFlags = NSDayCalendarUnit;
NSDateComponents * components = [gregorian components:unitFlags fromDate:today toDate:futureDate options:0];
NSLog(@"Number of days: %i",[components day]);
[today release];
[dateFormatter release];
Количество дней: 6 из приведенного выше кода.На самом деле это 7 дней с сегодняшнего дня 19 ноября 2011 года.
Обновлено: Следующее работает отлично.Я повторяю код?
NSString * dateString = @"2011-11-26" ;
NSDateFormatter * dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
[dateFormatter setDateFormat:@"yyyy-MM-dd"];
NSDate * today = [NSDate date];
NSCalendar * greg = [[[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar] autorelease];
NSUInteger uf = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit;
NSDateComponents * comp = [greg components:uf fromDate:today];
today = [greg dateFromComponents:comp];
NSDate * futureDate = [dateFormatter dateFromString:dateString];;
NSCalendar * gregorian = [[[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar] autorelease];
NSUInteger unitFlags = NSDayCalendarUnit;
NSDateComponents * components = [gregorian components:unitFlags fromDate:today toDate:futureDate options:0];
NSLog(@"Number of days: %ld",[components day]);