Преобразование «текущее время» в «время в минутах с 00:00» - PullRequest
5 голосов
/ 30 ноября 2009

Я не так часто использовал NSDate, поэтому мне нужна помощь в подсчете, который я делаю.

У меня есть целое число, в котором час закрытия моего магазина указывается в минутах с полуночи. По сути, мой магазин закрывается в 5:00 вечера, что дает мне целое число 1020.

Итак, сейчас 10.45 вечера или 22.45. Целое число с 00:00 - 1365, и из этого я могу сказать

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

Тем не менее, я не знаю, как получить из "22.45", которое у меня есть от NSDate, чтобы преобразовать его в целое число, представляющее время с 00:00. Есть ли в NSDate что-то, что может помочь мне в этом?

Thx

Ответы [ 3 ]

7 голосов
/ 30 ноября 2009

Я рекомендую использовать объект NSDate для хранения времени закрытия магазина вместо использования вашего собственного целочисленного формата. К сожалению, NSDate представляет как дату, так и время даты.

В любом случае вы можете проверить NSDateComponents. Вы можете использовать метод утилит, например:

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];    
}
3 голосов
/ 07 января 2016

Быстрая версия того, что @notnoop ответил:

func minutesSinceMidnight(start : NSDate) -> Int {

    let units : NSCalendarUnit = [.Hour, .Minute]
    let components = NSCalendar.currentCalendar().components(units, fromDate: start)
    return 60 * components.hour + components.minute
}
1 голос
/ 30 ноября 2009

Если у вас есть другой NSDate, установленный на полночь, то вы можете использовать метод timeIntervalSinceDate объекта NSDate, чтобы получить NSTimeInterval с разницей между ними. В качестве альтернативы, если вы всегда хотите сравнить полночь с текущим временем, вы можете вызвать метод timeIntervalSinceNow в полночь NSDate, и вы получите обратно NSTimeInterval (хотя и отрицательное) с разницей между полночью и текущим время.

NSTimeInterval определяется как double стандартом, который содержит количество секунд (и любые доли секунды).

...