2013-08-06 35 views
5

我正在尝试制作一个标签,指出要等到事件还有多少天。我想计算今天的日期和事件日期之间的差异。我使用这个代码,它给我-4600。它工作正常,直到我使用今天的日期。如何获取两个日期之间的天数objective-c

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; 
+0

你说的一个问题是重复的我已经使用了这个答案,它不起作用。 – user1898829

+0

您是否确认'NSDate * endDate = [f dateFromString:end]'返回预期日期? - 字符串“end”包含什么? –

+1

@ user1898829那么你应该在你的问题中提到 – borrrden

回答

17

默认情况下[NSDate date]归期像2013-08-06 08:50:25 +0000 并已设置你的格式化程序yyyy-MM-dd这一点,所以你有你的startDate转换为yyyy-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; 
相关问题