Pregunta

Tengo dos valores de tiempo en el formato:% H% M% S (E.G.161500)

Estos valores son enteros basados ??en texto.

¿Hay una función simple en Cocoa que calcule la diferencia entre estos dos enteros usando una escala de 60 segundos y minutos?

Entonces si

time 1 = 161500
time 2 = 171500

timedifference = 003000
¿Fue útil?

Solución

NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
[dateFormatter setDateFormat:@"HHmmss"];

NSDate *date1 = [dateFormatter dateFromString:@"161500"];
NSDate *date2 = [dateFormatter dateFromString:@"171500"];

NSTimeInterval diff = [date2 timeIntervalSinceDate:date1]; // diff = 3600.0

Otros consejos

La clase para manipular fechas es NSDate . El método para obtener intervalos de tiempo es -timeIntervalSinceDate: . El resultado es un valor NSTimeInterval , que es un double que representa el intervalo en segundos.

Puede crear un objeto NSDate desde un NSString con + dateWithString: , siempre que su fecha esté formateada como 2001- 03-24 10:45:32 +0600 .

prueba este código.

- (NSTimeInterval)intervalBetweenDate:(NSDate *)dt1 andDate:(NSDate *)dt2 {

NSTimeInterval interval = [dt2 timeIntervalSinceDate:dt1];
NSLog(@"%f",interval);
return interval;

}

Crearía una subclase NSFormatter para analizar los valores de tiempo en ese formato a partir de los datos de entrada (puede poner uno en un campo de texto para convertir automáticamente la entrada del usuario, o usarlo para analizar desde una fuente de datos en código). Haga que devuelva el número combinado de segundos como un NSTimeInterval (doble que representa los segundos) envuelto en un NSNumber. A partir de ahí, es fácil restar la diferencia y mostrarla utilizando la misma clase NSFormatter que creó. Tanto en el análisis como en la visualización de valores, usted es el responsable de escribir el código convirtiendo de segundos a horas: minutos: segundos o el formato que desee. También puede convertir estos valores a un NSDate como mencionó mouviciel, si tiene sentido para su aplicación. Solo tenga en cuenta que siempre almacenará la diferencia horaria desde una fecha de referencia, generalmente el 1 de enero de 1970 (NSDate tiene métodos para hacer esto por usted).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top