Avatar ·

Como calcular a diferença entre duas datas em meses, dias, horas, minutos e segundos em Swift?

Olá! Sou novo em Swift e não consigo lidar com datas. Preciso calcular a diferença exata entre duas datas e exibi-la de forma legível: quantos meses, dias, horas, minutos e segundos se passaram. Por exemplo, entre 15 de março de 2023, 10:30:00 e 20 de julho de 2024, 14:45:30.

Tentei usar Calendar e DateComponents, mas obtenho resultados estranhos. Aqui está meu código atual:

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) dias, \(hours) horas, \(minutes) minutos, \(seconds) segundos")

O problema é que este método não considera meses e fornece apenas o total