Domanda

Ho due valori temporali nel formato:% H% M% S (E.G.161500)

Questi valori sono numeri interi basati su testo.

Esiste una semplice funzione in Cocoa che calcola la differenza tra questi due numeri interi usando una scala di 60 secondi e minuti?

Quindi se

time 1 = 161500
time 2 = 171500

timedifference = 003000
È stato utile?

Soluzione

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

Altri suggerimenti

La classe per manipolare le date è NSDate . Il metodo per ottenere intervalli di tempo è -timeIntervalSinceDate: . Il risultato è un valore NSTimeInterval , che è un double che rappresenta l'intervallo in secondi.

Puoi creare un oggetto NSDate da un NSString con + dateWithString: , a condizione che la tua data sia formattata come 2001- 03-24 10:45:32 +0600 .

prova questo codice.

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

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

}

Vorrei creare una sottoclasse NSFormatter per analizzare i valori temporali in quel formato dai dati di input (è possibile inserirne uno in un campo di testo per convertire automaticamente l'input dell'utente o usarlo per analizzare un'origine dati nel codice). Hanno restituito il numero combinato di secondi come un NSTimeInterval (doppio che rappresenta i secondi) racchiuso in un NSNumber. Da lì è facile sottrarre la differenza e visualizzarla utilizzando la stessa classe NSFormatter che hai creato. Sia nell'analisi che nella visualizzazione dei valori, sei tu il responsabile della scrittura del codice che converte da secondi a ore: minuti: secondi o qualunque formato ti piaccia. Puoi anche convertire questi valori in un NSDate come mouviciel menzionato, se ha senso per la tua applicazione. Tieni presente che memorizzerai sempre la differenza di orario rispetto a una data di riferimento, in genere il 1 ° gennaio 1970 (NSDate ha dei metodi per farlo per te).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top