obtener fecha color change bar actual swift nsdate

fecha - swift 3 change navigation bar title color



¿Cómo cambiar las horas y los minutos del día actual en Swift? (2)

Si creo una Date() para obtener la fecha y la hora actuales, quiero crear una nueva fecha a partir de eso, pero con diferentes horas, minutos y cero segundos, ¿cuál es la forma más fácil de hacerlo utilizando Swift? He estado encontrando tantos ejemplos con "obtener" pero no "configurar".


Swift extensión de 3 fechas con zona horaria

extension Date { public func setTime(hour: Int, min: Int, sec: Int, timeZoneAbbrev: String = "UTC") -> Date? { let x: Set<Calendar.Component> = [.year, .month, .day, .hour, .minute, .second] let cal = Calendar.current var components = cal.dateComponents(x, from: self) components.timeZone = TimeZone(abbreviation: timeZoneAbbrev) components.hour = hour components.minute = min components.second = sec return cal.date(from: components) } }


Tenga en cuenta que para los entornos locales que utilizan el horario de verano, es posible que algunas horas no existan en los días de cambio de reloj o que se produzcan dos veces. Ambas soluciones a continuación devuelven una Date? y usar fuerza de desenvolvimiento. Debes manejar posibles nil en tu aplicación.

Swift 3, 4 y iOS 8 / OS X 10.9 o posterior

let date = Calendar.current.date(bySettingHour: 9, minute: 30, second: 0, of: Date())!

Swift 2

Utilice NSDateComponents / DateComponents :

let gregorian = NSCalendar(calendarIdentifier: NSCalendarIdentifierGregorian)! let now = NSDate() let components = gregorian.components([.Year, .Month, .Day, .Hour, .Minute, .Second], fromDate: now) // Change the time to 9:30:00 in your locale components.hour = 9 components.minute = 30 components.second = 0 let date = gregorian.dateFromComponents(components)!

Tenga en cuenta que si llama a print(date) , la hora impresa está en UTC. Es el mismo momento en el tiempo, solo se expresa en una zona horaria diferente a la tuya. Use un NSDateFormatter para convertirlo a su hora local.