Convertir & # 8220; hora actual & # 8221; a & # 8220; tiempo en minutos desde 00: 00 & # 8221; ayuda de cálculo

StackOverflow https://stackoverflow.com/questions/1817749

  •  08-07-2019
  •  | 
  •  

Pregunta

No he usado mucho NSDate, así que me gustaría recibir ayuda con un cálculo que estoy haciendo.

Tengo un número entero que tiene la hora de cierre de mi tienda en minutos desde la medianoche. Básicamente, mi tienda cierra a las 5.00 p.m., lo que me da el número entero 1020.

Entonces, ahora son las 10.45 p.m. o las 22.45. Entero desde 00:00 es 1365, y de esto puedo decir

if (storeHour < currentTime) {
      // closed!
}

Sin embargo, no sé cómo obtengo de "22.45" que tengo de NSDate para convertirlo en un número entero que represente el tiempo desde las 00:00. ¿Hay algo en NSDate que me pueda ayudar con eso?

Thx

¿Fue útil?

Solución

Recomiendo usar un objeto NSDate para almacenar la hora de cierre de la tienda en lugar de usar su propio formato entero personalizado. Es lamentable que NSDate represente tanto la fecha como la hora.

En cualquier caso, puede marcar NSDateComponents . Puede tener un método de utilidades 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];    
}

Otros consejos

Una versión rápida de lo que @notnoop ha respondido:

func minutesSinceMidnight(start : NSDate) -> Int {

    let units : NSCalendarUnit = [.Hour, .Minute]
    let components = NSCalendar.currentCalendar().components(units, fromDate: start)
    return 60 * components.hour + components.minute
}

Si tiene otro NSDate que está configurado a medianoche, puede usar el método timeIntervalSinceDate del objeto NSDate para obtener un NSTimeInterval de vuelta con la diferencia entre los dos. Alternativamente, si siempre desea comparar la medianoche con la hora actual, puede llamar al método timeIntervalSinceNow en el NSDate de medianoche y obtendrá un NSTimeInterval (aunque negativo) con la diferencia entre la medianoche y la hora actual.

NSTimeInterval se define como un double por el estándar que contiene varios segundos (y cualquier segundo fraccionario).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top