2016-05-26 15 views
0

Ich zähle z. B. wie viele Stunden bis Mitternacht verlassen. Ich habe Tonnen von Tutorien über Countdown-Timer gefunden, aber ich kann keine für die Berechnung der linken Zeit finden. Irgendwelche Ideen wie soll ich es tun?Berechnen, wie Stunden in Swift

Danke!

Antwort

3
import Foundation 

let calendar = NSCalendar.currentCalendar() 
let noonToday = calendar.dateBySettingHour(12, minute: 0, second: 0, ofDate: NSDate(), options: [])! 
let noonishTomorow = calendar.dateByAddingUnit(.Day, value: 1, toDate: noonToday, options: [])! 
let midnight = calendar.startOfDayForDate(noonishTomorow) 

let components = calendar.components([.Hour, .Minute], fromDate: NSDate(), toDate: midnight, options: []) 
let hoursUntilMidnight = components.hour 
let minutesUntilMidnight = components.minute 

Sie haben wirklich vorsichtig sein mit „Mitternacht“, weil es nicht immer existiert, manchmal ist es doppelt vorhanden, etc ... Das ist, warum Apple immer empfiehlt stattdessen mit Mittag arbeiten, wie ich oben tun.

Vermeiden Sie jede Antwort, die Ihnen sagt, die Stunde explizit auf Mitternacht zu setzen und dann subtrahieren. Du hast gerade die Stunde gesagt, aber ich habe dir Minuten gegeben, falls du sehen müsstest, wie das geht.

+0

Der 'Foundation'-Import erfolgt unter OS X. Wenn Sie iOS verwenden, lassen Sie diese Zeile einfach weg, da Sie UIKit bereits integriert haben. – Gargoyle

0

Eine einfachere Lösung:

let now = NSCalendar.currentCalendar().componentsInTimeZone(NSTimeZone.defaultTimeZone(), fromDate: NSDate()) 
let hoursTillMidnight = 24 - now.hour 

print(hoursTillMidnight) 

Dies findet nicht in Konten Dinge wie Minuten. Sowohl 1:01 PM als auch 1:59 PM sind 11 Stunden bis Mitternacht. Sie können die Stunde rauf und runter drehen, wenn Sie wollen.