2013-08-06 18 views
5

Sto provando a creare un'etichetta che indichi quanti giorni mancano all'evento. Voglio calcolare la differenza tra la data odierna e la data degli eventi. Sto usando questo codice e mi sta dando -4600. Funziona bene fino a quando uso la data di oggi.Come ottenere il numero di giorni tra due date obiettivo-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

L'unica domanda in cui dici è un duplicato. Ho usato quella risposta e non funziona. – user1898829

+0

Hai verificato che 'NSDate * endDate = [f dateFromString: end]' restituisce la data prevista? - Cosa contiene la stringa 'end'? –

+1

@ user1898829 Quindi dovresti averlo menzionato nella tua domanda – borrrden

risposta

17

Per impostazione predefinita [NSDate date] data di ritorno dentro come 2013-08-06 08:50:25 +0000 e si è impostato il formattatore a yyyy-MM-dd questo, in modo da avere per convertire il vostro startDate a yyyy-MM-dd questa forma ..

Prova questo

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; 
Problemi correlati