Recuperando la hora local actual en iPhone?

Estoy buscando obtener la hora y los minutos actuales en el iPhone de un usuario para mostrarlos en una aplicación que no muestra la barra de estado. ¿Hay una manera simple de hacer esto?

// get current date/time NSDate *today = [NSDate date]; NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; // display in 12HR/24HR (ie 11:25PM or 23:25) format according to User Settings [dateFormatter setTimeStyle:NSDateFormatterShortStyle]; NSString *currentTime = [dateFormatter stringFromDate:today]; [dateFormatter release]; NSLog(@"User's current time in their preference format:%@",currentTime); 
 -(void)currentTime { //Get current time NSDate* now = [NSDate date]; NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian]; NSDateComponents *dateComponents = [gregorian components:(NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond) fromDate:now]; NSInteger hour = [dateComponents hour]; NSString *am_OR_pm=@"AM"; if (hour>12) { hour=hour%12; am_OR_pm = @"PM"; } NSInteger minute = [dateComponents minute]; NSInteger second = [dateComponents second]; [gregorian release]; NSLog(@"Current Time %@",[NSString stringWithFormat:@"%02ld:%02ld:%02ld %@", (long)hour, (long)minute, (long)second,am_OR_pm]); } 
 NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setDateStyle:NSDateFormatterMediumStyle]; [dateFormatter setTimeStyle:NSDateFormatterMediumStyle]; [dateFormatter setTimeZone:[NSTimeZone localTimeZone]]; NSString *currentTime = [dateFormatter stringFromDate:[NSDate date]] [dateFormatter release]; dateFormatter = nil; 

Creo que deberías probar esto. TimeZone es importante.

Vea esta pregunta similar para una respuesta. Tendrá que cambiarlo a su formato de fecha.

 [[NSDate date] timeIntervalSince1970]; 

Si está buscando calcular intervalos de tiempo, es mejor que use CACurrentMediaTime

 double currentTime = CACurrentMediaTime(); 

Un enfoque más corto

 NSDate * now = [NSDate date]; timeLabel.text = [NSDateFormatter localizedStringFromDate:now dateStyle:NSDateFormatterNoStyle timeStyle:NSDateFormatterShortStyle]; 

CFAbsoluteTimeGetCurrent ()

El tiempo absoluto se mide en segundos con respecto a la fecha de referencia absoluta del 1 de enero de 2001 00:00:00 GMT. Un valor positivo representa una fecha posterior a la fecha de referencia, un valor negativo representa una fecha anterior. Por ejemplo, el tiempo absoluto -32940326 es equivalente al 16 de diciembre de 1999 a las 17:54:34. Las llamadas repetidas a esta función no garantizan resultados monótonamente crecientes. El tiempo del sistema puede disminuir debido a la sincronización con referencias de tiempo externas o debido a un cambio de usuario explícito del reloj.