Avatar ·

Cómo calcular la diferencia entre dos fechas en meses, días, horas, minutos y segundos en Swift?

¡Hola! Soy nuevo en Swift y no puedo entender las fechas. Necesito calcular la diferencia exacta entre dos fechas y mostrarla en un formato legible: cuántos meses, días, horas, minutos y segundos han pasado. Por ejemplo, entre el 15 de marzo de 2023, 10:30:00 y el 20 de julio de 2024, 14:45:30.

He intentado usar Calendar y DateComponents, pero obtengo resultados extraños. Aquí está mi código actual:

import Foundation

let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy/MM/dd HH:mm:ss"
let date1 = dateFormatter.date(from: "2023/03/15 10:30:00")!
let date2 = dateFormatter.date(from: "2024/07/20 14:45:30")!

let diff = date2.timeIntervalSince(date1)
let days = Int(diff) / 86400
let hours = (Int(diff) % 86400) / 3600
let minutes = (Int(diff) % 3600) / 60
let seconds = Int(diff) % 60

print("\(days) días, \(hours) horas, \(minutes) minutos, \(seconds) segundos")

El problema es que este método no tiene en cuenta los meses y solo da el total