Diferencia entre dos objects NSDate – Resultado también un NSDate

Tengo dos objects NSDate y quiero la diferencia entre los dos y el resultado debe ser nuevamente un object NSDate. ¿Alguna idea de cómo lograr esto?

Aquí, estoy tratando de abordar un problema único donde tengo que averiguar el time transcurrido y luego localizar el time transcurrido. Puedo localizarlo si tengo el time transcurrido en el object NSDate. Así que pensé en crear un object NSDate que tenga su componente de time igual que el intervalo de time entre las dos dates para poder usar NSDateFormatter para localizarlo.

NSDate representa una instancia en el time, por lo que no tiene sentido representar un intervalo de time como un NSDate . Lo que quiere es NSDateComponents :

 NSDate *dateA; NSDate *dateB; NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian]; NSDateComponents *components = [calendar components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay fromDate:dateA toDate:dateB options:0]; NSLog(@"Difference in date components: %i/%i/%i", components.day, components.month, components.year); 

Si restan 12/12/2001 desde 05/05/2002 ¿cuál será la date? La distancia cronológica entre dos dates no puede ser una date, siempre hay algún tipo de intervalo. Puede usar timeIntervalSinceDate: para calcular el intervalo.

Para localizar puede probar los siguientes pasos:

  • Puede usar NSCalendar con dateFromComponents: pasar en NSDateComponents .

  • Para desglosar un Intervalo de time en NSDateComponents, ¿cómo puedo desglosar un Intervalo de hora de NST en año, meses, días, horas, minutos y segundos en el iPhone? .

  • Finalmente use el NSDateFormatter y initWithDateFormat: allowNaturalLanguage: para get su cadena localizada. La Sintaxis de cadena de formatting de date muestra los diferentes marcadores de position.

Desde la reference de la class NSDate , tiene methods de instancia para hacer esto:

  1. ¿Cómo comparar dos variables NSDate? Respuesta: isEqualToDate:
  2. ¿Cómo encontrar la diferencia entre dos variables de NSDate? Respuesta: timeIntervalSinceDate:
  3. ¿Cómo get cada valor por separado de minutos, horas y días de NSDate variable? campo de golf

Puede calcular el intervalo de time entre dos dates utilizando NSDate de timeIntervalSinceDate: pero no tiene ningún sentido que represente un intervalo de time como date.

Hay una forma fácil de usar -compare: en NSDate:

 NSDate *dateA = [NSDate dateWithTimeIntervalSinceNow:100]; NSDate *dateB = [NSDate dateWithTimeIntervalSinceNow:200]; NSDate *myDate = [NSDate dateWithTimeIntervalSinceNow:150]; NSArray *dateArray = [NSArray arrayWithObjects:dateA, dateB, myDate, nil]; NSArray *sortedArray = [dateArray sortedArrayUsingSelector:@selector(compare:)]; if ([myDate isEqualToDate:[sortedArray objectAtIndex:1]]) NSLog(@"myDatea between dateA and dateB");