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

Foi útil?

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).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top