Jestem nowy w Swift i próbuję skorzystać z harmonogramu. Mam wybrany czas rozpoczęcia i muszę dodać 5 minut (lub jego wielokrotność) do czasu rozpoczęcia i wyświetlić go w UILabel?
@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
Jest niewątpliwie bardziej wydajnych (choć prawdopodobnie nie materiał, chyba że robisz to miliony razy). Bardziej krytyczne jest jednak to, że jeśli mówisz o jednostkach miary w dniach (lub dłużej), preferowane jest odwzorowanie kalendarza, ponieważ wykona za Ciebie wszystkie korekty czasu letniego.Możesz użyć metody Kalendarza
aby dodać
Calendar.Component
do dowolnegoDate
. Możesz utworzyć rozszerzenie daty, aby dodać x minut do swojejUIDatePicker
daty:Xcode 8 i Xcode 9 • Swift 3.0 i Swift 4.0
Następnie możesz po prostu użyć metody rozszerzenia, aby dodać minuty do nadawcy (UIDatePicker):
Testowanie placu zabaw:
źródło
.date(byAdding:value:to)
powracanil
? Czy możemy tu bezpiecznie wymusić rozpakowanie?Swift 4 :
// dodaj 5 minut do daty
// odejmij 5 minut od daty
Swift 5.1:
źródło
Możesz wykonywać arytmetykę dat przy użyciu
NSDateComponents
. Na przykład:To jest to, co widzisz, kiedy próbujesz tego na placu zabaw
źródło
NSDate.init
ztimeIntervalSinceNow
:Ex:
źródło
Zapisz to małe rozszerzenie:
Następnie użyj go intuicyjnie, jak:
źródło
self.days * 30
i lataself.days * 365
. To nie jest idealne, ponieważ rok może mieć 366 dni, a miesiąc może być inny niż 30 dni, ale nadal jest lepszy niż 28/336.Możesz użyć w Swift 4 lub 5
wynik:
źródło
Swift 3:
źródło
Jeśli chcesz unix timestamp
źródło
Myślę, że najprostszy będzie
źródło