Swift:
Comparer deux dates
How to: (Comment faire : )
import Foundation
// Création de deux dates
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy/MM/dd HH:mm"
let firstDate = dateFormatter.date(from: "2023/04/01 09:30")!
let secondDate = dateFormatter.date(from: "2023/04/01 10:00")!
// Comparer les dates
if firstDate == secondDate {
print("Les dates sont identiques.")
} else if firstDate < secondDate {
print("La première date est plus tôt que la deuxième.")
} else {
print("La première date est plus tard que la deuxième.")
}
// Utilisation de isEqual(to:), isBefore(value:) et isAfter(value:)
// dans une extension pour clarifier l'intention
extension Date {
func isEqual(to otherDate: Date) -> Bool {
return self == otherDate
}
func isBefore(_ otherDate: Date) -> Bool {
return self < otherDate
}
func isAfter(_ otherDate: Date) -> Bool {
return self > otherDate
}
}
// Utilisation de l'extension
if firstDate.isEqual(to: secondDate) {
print("Les dates sont identiques.")
} else if firstDate.isBefore(secondDate) {
print("La première date est plus tôt que la deuxième.")
} else {
print("La première date est plus tard que la deuxième.")
}
Sample Output:
La première date est plus tôt que la deuxième.
La première date est plus tôt que la deuxième.
Deep Dive (Plongée en Profondeur)
Historiquement, Swift a hérité de la gestion de la date et de l’heure de Cocoa et Objective-C, où NSDate
était omniprésent. Dans Swift, NSDate
est devenu Date
et a été amélioré avec des fonctionnalités de comparaison intuitives.
Outre Date
, le framework Foundation offre Calendar
pour des comparaisons plus complexes, par exemple, trouver la différence entre deux dates avec des composants comme les mois ou les jours. Il y a aussi la classe DateComponents
, qui permet de travailler avec des parties spécifiques d’une date.
En considérant les détails d’implémentation, il faut être prudent avec les fuseaux horaires et les calendriers lors de la comparaison des dates, car cela peut affecter le résultat.