Convertir & # 8220; hora actual & # 8221; a & # 8220; tiempo en minutos desde 00: 00 & # 8221; ayuda de cálculo
-
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
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).