Ios 如何获取两个日期之间的天数目标-c

Ios 如何获取两个日期之间的天数目标-c,ios,objective-c,nsstring,nsdate,Ios,Objective C,Nsstring,Nsdate,我正试着做一个标签,上面写着离活动还有多少天。我想计算今天日期和事件日期之间的差异。我正在使用这个代码,它给我-4600。在我使用今天的日期之前,它工作正常 NSDateFormatter *f = [[NSDateFormatter alloc] init]; [f setDateFormat:@"yyyy-MM-dd"]; NSDate *startDate = [NSDate date]; NSDate *endDate = [f dateFromString:en

我正试着做一个标签,上面写着离活动还有多少天。我想计算今天日期和事件日期之间的差异。我正在使用这个代码,它给我-4600。在我使用今天的日期之前,它工作正常

NSDateFormatter *f = [[NSDateFormatter alloc] init];
    [f setDateFormat:@"yyyy-MM-dd"];
    NSDate *startDate = [NSDate date];
    NSDate *endDate = [f dateFromString:end];
    NSCalendar *gregorianCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
    NSDateComponents *components = [gregorianCalendar components:NSDayCalendarUnit
                                                        fromDate:startDate
                                                          toDate:endDate
                                                         options:0];
    return components.day;
return components.day;

默认情况下,like中的返回日期为2013-08-06 08:50:25+0000 您已经将格式化程序设置为
yyyy-MM-dd
此格式,因此您必须将起始日期转换为
yyy-MM-dd
此格式

试试这个

NSDateFormatter *f = [[NSDateFormatter alloc] init];
    [f setDateFormat:@"yyyy-MM-ddHH:mm:ss ZZZ"];
    NSDate *startDate = [NSDate date];
    NSLog(@"%@",startDate);
    NSDate *endDate = [f dateFromString:end];
    NSLog(@"%@",endDate);


    NSCalendar *gregorianCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
    NSDateComponents *components = [gregorianCalendar components:NSDayCalendarUnit
                                                        fromDate:startDate
                                                          toDate:endDate
                                                         options:0];
    return components.day; 

您所说的一个问题是重复的,我使用了该答案,但它不起作用。您是否验证了
NSDate*endDate=[f dateFromString:end]
返回了预期的日期字符串
end
包含什么?@user1898829那么您应该在问题中提到这一点