Convert “tempo atual” para “tempo em minutos desde 00:00” ajuda cálculo
-
08-07-2019 - |
Pergunta
Eu não usei NSDate que muito, então eu gostaria de alguma ajuda com um cálculo que estou fazendo.
Eu tenho um inteiro que tem hora de encerramento da minha loja em minutos desde a meia-noite. Basicamente, minha loja fecha às 17:00, que me dá o inteiro 1020.
Então, agora é 22:45 ou 22h45. Integer desde 00:00 é 1365, ea partir deste posso dizer
if (storeHour < currentTime) {
// closed!
}
No entanto, eu não sei como eu recebo de "22,45" que eu tenho desde NSDate para convertê-lo para um inteiro que representa o tempo desde 00:00. Há algo em NSDate que pode me ajudar com isso?
Thx
Solução
Eu recomendo o uso de um objeto NSDate
para armazenar a hora da loja fechar em vez de usar o seu próprio formato inteiro personalizado. É lamentável que NSDate
representa tanto a data e hora da data.
Em qualquer caso, você pode verificar NSDateComponents
. Você pode ter um método utilitários como:
int minutesSinceMidnight:(NSDate *)date
{
NSCalendar *gregorian = [[NSCalendar alloc]
initWithCalendarIdentifier:NSGregorianCalendar];
unsigned unitFlags = NSHourCalendarUnit | NSMinuteCalendarUnit;
NSDateComponents *components = [gregorian components:unitFlags fromDate:date];
return 60 * [components hour] + [components minute];
}
Outras dicas
Uma versão rápida do que @notnoop tem respondeu:
func minutesSinceMidnight(start : NSDate) -> Int {
let units : NSCalendarUnit = [.Hour, .Minute]
let components = NSCalendar.currentCalendar().components(units, fromDate: start)
return 60 * components.hour + components.minute
}
Se você tem um outro NSDate
que está previsto para a meia-noite, então você pode usar o método timeIntervalSinceDate
do objeto NSDate para obter uma volta NSTimeInterval
com a diferença entre os dois. Alternativamente, se você está sempre querendo comparar meia-noite com a hora atual, você poderia chamar o método timeIntervalSinceNow
na meia-noite NSDate e você deseja obter uma volta NSTimeInterval
(embora negativa) com a diferença entre meia-noite e a hora atual.
NSTimeInterval
é definido como um double
pelo padrão que tem uma série de segundos (e quaisquer segundos fracionados).