Soy nuevo en Swift y estoy probando un programador. He seleccionado la hora de inicio y necesito agregar 5 minutos (o múltiplos de ella) a la hora de inicio y mostrarla en un 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
duda, es más eficaz (aunque probablemente no sea material a menos que lo esté haciendo millones de veces). Sin embargo, lo que es más crítico es que si está hablando de unidades de medida en días (o más), entonces la versión calendárica es preferible porque hará todos los ajustes de horario de verano por usted.Puedes usar el método de Calendar
para agregar cualquiera
Calendar.Component
a cualquieraDate
. Puede crear una extensión de fecha para agregar x minutos a suUIDatePicker
fecha:Xcode 8 y Xcode 9 • Swift 3.0 y Swift 4.0
Luego, puede usar el método de extensión para agregar minutos al remitente (UIDatePicker):
Prueba de patio de recreo:
fuente
.date(byAdding:value:to)
vuelvenil
? ¿Estamos seguros de forzar a desenvolver aquí?Rápido 4 :
// agrega 5 minutos hasta la fecha
// restar 5 minutos de la fecha
Rápido 5.1:
fuente
Puede hacer aritmética de fechas usando
NSDateComponents
. Por ejemplo:Es lo que ves cuando lo pruebas en el patio de recreo.
fuente
NSDate.init
contimeIntervalSinceNow
:Ej:
fuente
Guarde esta pequeña extensión:
Luego utilícelo intuitivamente como:
fuente
self.days * 30
y años:self.days * 365
. Esto no es perfecto porque el año puede tener 366 días y el mes puede ser diferente a 30 días, pero aún así es mejor que 28/336.Puede usar en swift 4 o 5
salida:
fuente
Swift 3:
fuente
En caso de que desee una marca de tiempo unix
fuente
Creo que lo mas simple sera
fuente