2015-09-16 2 views
2

Я хочу рассчитать оставшееся время. У меня есть время окончания. Как рассчитать время, оставшееся между временем и временем окончания?Как найти промежуток времени между двумя временами?

мне нужно что-то вроде этого

let date = NSDate() 
let formatter = NSDateFormatter() 
formatter.timeStyle = .ShortStyle 
var now = formatter.stringFromDate(date) //prints 12.21 AM 
var finishTime = "13:30 PM" 

var remaining = now - finishTime //I want it to print 01:09 as remaining time 

ответ

5
func timeRemainingString(finishDate date:NSDate) -> String { 
    let secondsFromNowToFinish = date.timeIntervalSinceNow 
    let hours = Int(secondsFromNowToFinish/3600) 
    let minutes = Int((secondsFromNowToFinish - Double(hours) * 3600)/60) 
    let seconds = Int(secondsFromNowToFinish - Double(hours) * 3600 - Double(minutes) * 60 + 0.5) 

    return String(format: "%02d:%02d:%02d", hours, minutes, seconds) 
} 
+0

Если кто-то собирается для использования этого подхода существует более чистое решение [здесь] (http://stackoverflow.com/a/4933139/1032372). – shim

1

правильные и в конечном счете гораздо более простое решение, и обрабатывает локализацию и такие вещи, как високосные секунды/дни должным образом, чтобы использовать NSDateComponentsFormatter.

let formatter = DateComponentsFormatter() 
formatter.zeroFormattingBehavior = .pad 
formatter.allowedUnits = [.hour, .minute, .second] 

print(formatter.string(from: 200.0)!) 

выходы "0:03:20"

Это Swift версия this Objective C answer.

Есть много различных вариантов, которые вы можете увидеть в documentation в случае, если вы хотите что-то больше похоже на «Около 3 секунд до конца», аббревиатуры, больше единицы, как лет/месяцев/дней и т.д.

Смежные вопросы