Un NSTimeInterval
, como su nombre, um, implica, no representa lo mismo que NSDate
. Un NSDate
es un momento a tiempo. Un intervalo de tiempo es un lapso de tiempo. Para obtener un punto de un intervalo, debes tener otro punto. Su pregunta es como preguntar "¿Cómo convierto 12 pulgadas a un punto en este tablero que estoy cortando?" Bueno, 12 pulgadas, comenzando desde donde?
Debe seleccionar una fecha de referencia. Es muy probable que sea el NSDate
que representa la hora en que comenzó su contador. Entonces puede usar +[NSDate dateWithTimeInterval:sinceDate:]
o -[NSDate dateByAddingTimeInterval:]
Dicho esto, estoy bastante seguro de que está pensando en esto al revés. Está intentando mostrar el tiempo transcurrido desde algún punto de inicio, es decir, el intervalo , no la hora actual. Cada vez que actualice la pantalla, debería usar el nuevo intervalo. Por ejemplo (suponiendo que tiene una cocción temporizador periódicamente para hacer la actualización):
- (void) updateElapsedTimeDisplay: (NSTimer *)tim {
// You could also have stored the start time using
// CFAbsoluteTimeGetCurrent()
NSTimeInterval elapsedTime = [startDate timeIntervalSinceNow];
// Divide the interval by 3600 and keep the quotient and remainder
div_t h = div(elapsedTime, 3600);
int hours = h.quot;
// Divide the remainder by 60; the quotient is minutes, the remainder
// is seconds.
div_t m = div(h.rem, 60);
int minutes = m.quot;
int seconds = m.rem;
// If you want to get the individual digits of the units, use div again
// with a divisor of 10.
NSLog(@"%d:%d:%d", hours, minutes, seconds);
}
perfecto! ¡justo lo que necesitaba! – hfossli