Como recuperar o número de horas após a meia-noite de um objeto NSDat
Preciso recuperar o número de horas após a meia-noite de um controle UIDatePicker em um projeto do iPhone.datePickerMode
está configurado paraUIDatePickerModeTime
, para que o usuário possa definir apenas uma hora, sem data. Quando o usuário termina e dispensa a exibição em que o UIDatePicker está ativado, a seguinte data pode ser recuperada (como exemplo):
NSDate *returnTime = timePicker.date;
NSLog(@"returnTime: %@", returnTime); // returns for example @"1970-01-01 10:13:00 PM +0000"
Como disse, estou procurando o número de horas depois da meia-noite. No exemplo acima, esse valor deve ser22
. Eu queria conseguir isso criando um objeto NSDateFormatter e extraindo a hora do dia no formato de relógio de 24 horas, usando assimsetDateFormat:@"H"
(H maiúsculo em vez de 'h'):
NSDateFormatter *formatHour = [[NSDateFormatter alloc] init];
[formatHour setDateFormat:@"H"];
NSInteger intHoursPastMidnight = [[formatHour stringFromDate:returnTime] integerValue];
Isto nem sempre funciona como esperado. Quando o usuário desabilitar o relógio de 24 horas nas Preferências em todo o sistema (ou seja, o usuário usa AM / PM),intHoursPastMidnight
conterá10
ao invés de22
. 10
é realmente o valor visível noUIDatePicker
, mas eu esperavaNSDateFormatter
para converter isso para22
por causa de@"H"
.
O que há de errado aqui? Minha suposição de conversão está incorreta? Isso é um erro do UIDatePicker? Como posso resolver o problema, para que eu possa acessar essencialmente o número de horas após a meia-noite definido no UIDatePicker, independente da preferência de relógio de 12 ou 24 horas do usuário? Este é o caminho a segui
objetivo final, para deixar claro, é recuperar o número de minutos após a meia-noite (portanto, horas * 60 + minutos, valor sempre entre 0 e 1440