No creo que esto le dé un número absoluto de horas. Solo le dará un valor de 0-24, donde debe confiar en los componentes Día, Mes y Año para obtener el intervalo de tiempo completo.
codeperson
Probé esto y funciona bien. Con fromDate 1 / Jan / 2012 y toDate 4 / Jan / 2012, esto devolvió 96 horas.
Thomas Müller
publica tu código Thomas? No funciona para algunos.
John Riselvato
Respuestas:
171
El NSDate función timeIntervalSinceDate: le dará la diferencia de dos fechas en cuestión de segundos.
Cambie los componentes necesarios por día, hora o minuto, la diferencia que desee. Si NSDayCalendarUnitse selecciona, devolverá el número de días entre dos fechas de manera similar para NSHourCalendarUnityNSMinuteCalendarUnit
Versión Swift 4
let cal =Calendar.current
let d1 =Date()let d2 =Date.init(timeIntervalSince1970:1524787200)// April 27, 2018 12:00:00 AMlet components = cal.dateComponents([.hour],from: d2, to: d1)let diff = components.hour!
No, no hagas esto. No todas las horas tienen 3600 segundos. No todos los días tienen 24 horas.
rmaddy
5
Esto está totalmente mal. No tiene en cuenta los segundos intercalares ni el horario de verano. No reinvente la rueda, solo use las API proporcionadas con iOS como NSDateComponents.
Juan Catalán
5
Pago: Se encarga del horario de verano, año bisiesto, ya que usó el calendario de iOS para calcular. Puede cambiar la cadena y las condiciones para incluir minutos con horas y días.
NSCalendar
el-components:fromDate:toDate:options:
método de.Respuestas:
El NSDate función timeIntervalSinceDate: le dará la diferencia de dos fechas en cuestión de segundos.
Consulte la biblioteca de referencia de Apple http://developer.apple.com/library/mac/navigation/ o si está usando Xcode, simplemente seleccione ayuda / documentación en el menú.
Ver: cómo-convertir-un-n-tiempo-intervalo-segundos-en-minutos
--editar: Vea la respuesta de ÐąrέÐέvil a continuación para manejar correctamente el horario de verano / segundos bisiestos
fuente
Cambie los componentes necesarios por día, hora o minuto, la diferencia que desee. Si
NSDayCalendarUnit
se selecciona, devolverá el número de días entre dos fechas de manera similar paraNSHourCalendarUnit
yNSMinuteCalendarUnit
Versión Swift 4
fuente
fuente
Pago: Se encarga del horario de verano, año bisiesto, ya que usó el calendario de iOS para calcular. Puede cambiar la cadena y las condiciones para incluir minutos con horas y días.
fuente
Para aquellos que usan swift 3 y superior,
fuente