Ich bin neu bei Swift und versuche einen Scheduler. Ich habe die Startzeit ausgewählt und muss der Startzeit 5 Minuten (oder ein Vielfaches davon) hinzufügen und sie in einem UILabel anzeigen.
@IBAction func timePickerClicked(sender: UIDatePicker) {
var dateFormatter = NSDateFormatter()
dateFormatter.timeStyle = NSDateFormatterStyle.ShortStyle
var dateStr = dateFormatter.stringFromDate(startTime.date)
let sttime = dateStr
startTimeDisplay.text = dateStr
}
// How to advance time by 5 minutes for each section based on the start time selected and display time
// section 1 = start time + 5
// section 2 = start time + 10*
addingTimeInterval
ist zweifellos performanter (obwohl es wahrscheinlich nicht wesentlich ist, wenn Sie dies nicht millionenfach tun). Was jedoch kritischer ist, ist, wenn Sie über Maßeinheiten in Tagen (oder länger) sprechen, dann ist die kalendarische Wiedergabe vorzuziehen, da sie alle Anpassungen der Sommerzeit für Sie übernimmt.Sie können die Kalendermethode verwenden
jeder hinzufügen
Calendar.Component
zu einemDate
. Sie können eine Datumserweiterung erstellen, um Ihrem Datum x Minuten hinzuzufügenUIDatePicker
:Xcode 8 und Xcode 9 • Swift 3.0 und Swift 4.0
Dann können Sie einfach die Erweiterungsmethode verwenden, um dem Absender Minuten hinzuzufügen (UIDatePicker):
Spielplatztests:
quelle
.date(byAdding:value:to)
zurücknil
? Können wir hier sicher das Auspacken erzwingen?Swift 4 :
// füge 5 Minuten zum Datum hinzu
// 5 Minuten vom Datum abziehen
Swift 5.1:
quelle
Sie können Datumsarithmetik mit verwenden
NSDateComponents
. Beispielsweise:Es ist das, was Sie sehen, wenn Sie es auf dem Spielplatz versuchen
quelle
NSDate.init
mittimeIntervalSinceNow
:Bsp.:
quelle
Speichern Sie diese kleine Erweiterung:
Verwenden Sie es dann intuitiv wie folgt:
quelle
self.days * 30
und Jahre :self.days * 365
. Dies ist nicht perfekt, da das Jahr 366 Tage haben kann und der Monat sich von 30 Tagen unterscheiden kann, aber es ist immer noch besser als 28/336.Sie können in Swift 4 oder 5 verwenden
Ausgabe:
quelle
Swift 3:
quelle
Falls Sie einen Unix-Zeitstempel möchten
quelle
Ich denke das einfachste wird sein
quelle