No estoy seguro de lo que estoy haciendo mal, necesito encontrar la diferencia entre dos fechas y extraer segundos de ella, a continuación se muestra mi código. No obtengo los segundos correctos. Hay diferencia de segundos.
public func captureStartTime() { captureStartDateTime = Date() } public func captureEndTime(eventType: String, eventElement: String) { let difference = Date().timeIntervalSince(captureStartDateTime) let interval = Int(difference) let seconds = interval % 60 let secondsDescrp = String(format: "%02d", seconds) }interval es la respuesta que desea. Ese es el número total de segundos entre las dos fechas.
Su valor de seconds solo sería útil si quisiera calcular la cantidad de horas, minutos y segundos o la cantidad de minutos y segundos a partir de la cantidad total de segundos.
Use el siguiente código para obtener la diferencia entre dos fechas, almacene la hora actual en startTime cuando presione el botón 1 y almacene la fecha actual en endTime cuando presione el botón 2, vea este código, espero que esto lo ayude.
var startTime:Date! var endTime:Date! @IBAction func buttonStartTime(_ sender: UIButton) { startTime = Date() } @IBAction func buttonEndTime(_ sender: UIButton) { endTime = Date() let formatter = DateComponentsFormatter() formatter.allowedUnits = [.second] formatter.unitsStyle = .full let difference = formatter.string(from: startTime, to: endTime)! print(difference)//output "8 seconds" }Producción
8 segundos
también puede usar componentes de fecha predeterminados y, de acuerdo con eso, compare sus fechas y puede obtener la diferencia en año, mes, día, etc.
let dateString1 = "2019-03-07T14:20:20.000Z" let dateString2 = "2019-03-07T14:20:40.000Z" //set date formate let Dateformatter = DateFormatter() Dateformatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ" //convert string to date let dateold = Dateformatter.date(from: dateString1)! let datenew = Dateformatter.date(from: dateString2)! //use default datecomponents with two dates let calendar1 = Calendar.current let components = calendar1.dateComponents([.year,.month,.day,.hour,.minute,.second], from: dateold, to: datenew) let seconds = components.second print("Seconds: \(seconds)")