¿Cómo convertir NSDate en formato relativo como "Hoy", "Ayer", "hace una semana", "hace un mes", "hace un año"?

Quiero convertir nsdate en formato relativo como"Today","Yesterday","a week ago","a month ago","a year ago","date as it is".

He escrito el siguiente método para ello ... pero de alguna manera, solo se imprime tal como es la fecha. ¿Podría decirme cuál debería ser el problema?

// La siguiente es mi función que convierte la fecha en una cadena relativa

+(NSString *)getDateDiffrence:(NSDate *)strDate{
    NSDateFormatter *df = [[NSDateFormatter alloc] init];

    df.timeStyle = NSDateFormatterMediumStyle;
    df.dateStyle = NSDateFormatterShortStyle;
    df.doesRelativeDateFormatting = YES;
    NSLog(@"STRING DATEEE : %@ REAL DATE TODAY %@",[df stringFromDate:strDate],[NSDate date]);
      return [df stringFromDate:strDate];

}

Tengo cadena de fecha con el siguiente formato"2013-10-29T09:38:00"

Cuando intenté dar el objeto NSDate, siempre me devuelve la fecha nula.
Así que traté de convertir esa fecha enyyyy-MM-dd HH:mm:ssZZZZ Luego paso esta fecha para funcionar, entonces solo estoy imprimiendo la fecha completa ..

¿Cómo resolver este problema?

// A continuación se muestra el código al que llamo la función anterior.

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss"];
NSDate *date = [formatter dateFromString:[threadDict objectForKey:@"lastMessageDate"]];
[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ssZZZZ"];

NSString *date1 = [formatter stringFromDate:date];
NSDate *date_d = [formatter dateFromString:date1];
NSString *resultstr=[UserManager getDateDiffrence:date];

self.dateLabel.text=resultstr;

Respuestas a la pregunta(16)

Su respuesta a la pregunta