J'essaie de comparer deux jours en ignorant le temps. Donc j'utilise
calendar.compare(date1, to: date2, toGranularity: .day)
MAIS lors du transfert de la date de chaîne à Datetype, il est transformé en UTC. Il sera donc "déplacé" du 1.1.2016 0:05 au 31.12.2015 23:05 pm. Lors de la comparaison quotidienne, cela inclut uniquement l'heure restante. Avant la conversion, c'était 24 heures. Une idée pour gérer ce problème sans trop d'efforts?
Aditionellement: Le code:
var dateFormatter = DateFormatter()
dateFormatter.dateFormat = "dd-MM-yyyy hh:mm"
var date1 : Date = dateFormatter.date(from: "01-01-2016 00:05")!
var date2 = dateFormatter.date(from: "01-01-2016 03:30")
if let dateFromString = dateFormatter.date(from: "01-01-2016 00:05") {
print(dateFromString)
dateFormatter.timeZone = TimeZone(secondsFromGMT: 0)
let stringFromDate = dateFormatter.string(from: dateFromString)
}
Calendar.current.compare(date1, to: date2!, toGranularity: .day) == .orderedSame
Réponses:
4 pour la réponse № 1Essayez ce code:
var dateFormatter = DateFormatter()
dateFormatter.dateFormat = "dd-MM-yyyy hh:mm"
dateFormatter.timeZone = TimeZone(secondsFromGMT: 0)
var date1 = dateFormatter.date(from: "01-01-2016 00:05")
var date2 = dateFormatter.date(from: "01-01-2016 03:30")
print("date1: (date1!)")
print("date2: (date2!)")
if Calendar.current.compare(date1!, to: date2!, toGranularity: .day) == .orderedSame {
print("orderedSame")
}