2016-02-01 3 views
0

У меня есть модель в Swift с NSDate поля с именем expirationDate, и я хочу, чтобы вычислить часов оставшихся до истечения срока действия на основе текущей даты.Swift: NSDate минус NSDate в часах

Есть ли простой способ сделать это с существующей функциональностью NSDate?

ответ

2

Невозможно проверить сейчас, но должно быть что-то вроде

expirationDate.timeIntervalSinceNow/3600 
+0

Это лучше, чем мой ответ, я полностью разнесены на т imeIntervalSinceNow даже быть вещью. Ваш ответ работает в REPL без изменений. – Undo

1

Просто найти количество секунд (NSTimeInterval) между двумя датами ('сейчас' и дату истечения срока действия) и разделить на 60 * 60 = 3600:

let secondsUntilExpiration = expirationDate.timeIntervalSinceDate(NSDate()); 

let hoursUntilExpiration = secondsUntilExpiration/3600 

Например:

7> let now = NSDate() 
now: NSDate = 2016-02-01 03:44:06 UTC 
    8> let expirationDate = now.dateByAddingTimeInterval(60*60*10) // ten hours from now 
expirationDate: NSDate = 2016-02-01 13:44:06 UTC 
    9> let secondsUntilExpiration = expirationDate.timeIntervalSinceDate(NSDate()); 
secondsUntilExpiration: NSTimeInterval = 35991.422316968441 
10> let hoursUntilExpiration = secondsUntilExpiration/3600 
hoursUntilExpiration: Double = 9.9976173102690122 
// Slightly less than the 10 hours above because of the time it took me to type. 
Смежные вопросы