Calcular diferencia horaria en cacao
-
19-08-2019 - |
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
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).