Pergunta

I tem dois timevalues ??no formato:% H% H% S (E.G.161500)

Estes valores são inteiros baseados em texto.

Existe uma função simples em Cocoa que calcula a diferença entre estes dois inteiros usando uma escala de 60 segundos e minutos?

Então, se

time 1 = 161500
time 2 = 171500

timedifference = 003000
Foi útil?

Solução

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

Outras dicas

A classe para datas manipulação é NSDate. O método para obter intervalos de tempo é -timeIntervalSinceDate:. O resultado é um valor NSTimeInterval, que é um double representando o intervalo em segundos.

Você pode criar um objeto NSDate de um NSString com +dateWithString:, desde que a sua data é formatado como 2001/03/24 10:45:32 0600 .

tentar este código.

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

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

}

Gostaria de criar uma subclasse NSFormatter para valores de tempo de análise nesse formato de dados de entrada (você pode colocar um em um campo de texto para converter automaticamente a entrada do usuário, ou usá-lo para analisar a partir de uma fonte de dados em código). Tem que retornar o número combinado de segundos como uma NSTimeInterval (duplas segundo representando) enrolado em uma NSNumber. A partir daí é fácil subtrair a diferença, e exibi-lo usando a mesma classe NSFormatter você criou. Em ambos os valores exibindo análise e, você é o único responsável por escrever código conversão de segundos para horas: formato de segundos ou o que quiser: minutos. Você também pode converter esses valores para um NSDate como mouviciel mencionado, se faz sentido para a sua aplicação. Basta ter em mente que você está sempre vai estar armazenando a diferença de tempo entre a data de referência, normalmente 01 de janeiro de 1970 (NSDate tem métodos para fazer isso para você).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top