2011-08-22 29 views
14

Estoy tomando dos NSDates utilizando el selector de fecha y hora. Ahora quiero contar la cantidad de días entre estos dos NSDates. ¿Cómo puedo encontrar la diferencia entre dos NSDates?Diferencia entre dos NSDates

por favor dame alguna solución.

Muchas gracias.

+0

posible duplicado de [Número de días entre dos NSDates] (http://stackoverflow.com/questions/4739483/number-of-days-between-two-nsdates) –

Respuesta

24

referencia NSDate es un pequeño documento: http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSDate_Class/Reference/Reference.html

- (NSTimeInterval)timeIntervalSinceDate:(NSDate *)anotherDate 

es lo que está buscando, si quieres que el tiempo de intervalo diferencia.

Para los días (ya que no todos los días tiene la misma cantidad de minutos, horas) desea ver Martins contesta a continuación y utilizar NSDateComponents con [NSCalendar currentCalendar]

+0

¿Todos los días no tienen el mismo número de horas? Pensé que todos los días tiene 24 horas? ¿Puedes explicarme cómo es esto así? – GeneCode

+0

La tierra no gira de manera uniforme, algunos días podrían ser más largos que otros. –

53

He aquí una pequeña joya para usted - con más de pocos días :

// Assuming you have fistDate and secondDate 

unsigned int unitFlags = NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitDay | NSCalendarUnitMonth; 

NSDateComponents *conversionInfo = [currCalendar components:unitFlags fromDate:fistDate toDate:secondDate options:0]; 

int months = [conversionInfo month]; 
int days = [conversionInfo day]; 
int hours = [conversionInfo hour]; 
int minutes = [conversionInfo minute]; 

Esto es muy útil - especialmente cuando el formato de cadena como:

[NSString stringWithFormat:@"%d months , %d days, %d hours, %d min", months, days, hours, minutes]; 

feliz :) Codificación

+8

+1 esta es la forma correcta de hacerlo. –

+0

@Dave DeLong Sí, es una pena que la gente se contente con jugar de la peor manera con flotadores y preguntas para estos asuntos. – martin

+0

Y? ¿Qué deberíamos hacer con firstDate y SecondDate? – Gargo

1

Aquí hay una rápida aplicación (yo uso esto todo el tiempo durante la depuración cosas como las solicitudes de red y análisis JSON):

let date1 = NSDate() 

// do some long running task 

let date2 = NSDate() 
print(date2.timeIntervalSinceDate(date1)) 

// you can also do this in one line, of course: 
print(NSDate().timeIntervalSinceDate(date1))