2011-06-10 657 views
24

Duplicar posible:
How to Get time difference in iPhonela sustracción de dos objetos NSDate

Estoy fecha y hora conseguir a partir de una alimentación JSON. Necesito encontrar la diferencia entre la fecha que recibo del feed y la fecha y hora de hoy. ¿Alguna sugerencia de cómo puedo hacer esto?

Sé que necesito restar la fecha actual de la fecha en que recibo el feed, pero no sé cómo hacerlo.

Ex:

Fecha de alimentación: Date: 2011-06-10 15:00:00 +0000 Hoy: Date: 2011-06-10 14:50:00 +0000

necesito para mostrar que la diferencia es de diez minutos.

Gracias!

+0

debería ver http://stackoverflow.com/questions/1427151/how -to-get-time-difference-in-iphone –

Respuesta

52

Cree dos objetos NSDate de las cadenas utilizando de NSDate -dateWithString:, a continuación, obtener la diferencia de los dos objetos NSDate usando

NSTimeInterval diff = [date2 timeIntervalSinceDate:date1]; 
+0

Gracias usted, funciona! – Magnus

0

De debajo código obtendrá una idea para comparar dos objetos NSDate.

NSDate *dateOne = [NSDate dateWithString:@"2011-06-10 15:00:00 +0000"]; 
NSDate *dateTwo = [NSDate dateWithString:@"2011-06-10 14:50:00 +0000"]; 

switch ([dateOne compare:dateTwo]) 
{ 
    case NSOrderedAscending: 
     NSLog(@”NSOrderedAscending”); 
     break; 
    case NSOrderedSame: 
     NSLog(@”NSOrderedSame”); 
     break; 
    case NSOrderedDescending: 
     NSLog(@”NSOrderedDescending”); 
     break; 
} 
+0

Ten cuidado con la publicación SO http://stackoverflow.com/questions/5562594/difference-between-two-nsdate-objects-result-also-a-nsdate – Jhaliya

3

Es necesario convertir la fecha de entrada a un objeto NSDate antes de intentar comparar.

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss +0000"]; 
NSDate *startDate = [dateFormatter dateFromString:yourJSONDateString]; 
NSDate *endDate = [NSDate date]; 

CGFloat minuteDifference = [endDate timeIntervalSinceDate:startDate]/60.0; 

El formateador supone que el desplazamiento UTC siempre será cero. Si esto no es cierto, vea Microsoft's date format string page para conocer otros códigos de formato que puede usar.

-

Editar: el método dateWithString que todos los demás utilizar será mejor utilizar en su situación, pero el formateador fecha es necesaria si la cadena de formato de fecha que está recibiendo no es exactamente correcto. No creo que alguna vez haya usado una API que haya enviado fechas en el formato correcto, tal vez tenga mala suerte :-(.

+0

CGFloat no es puntero – AAV

+0

Eso es lo que recibo por no escribir mi respuesta en Xcode antes de enviarla. – kubi

Cuestiones relacionadas