/ / Swift: Comparez la date par jour - Swift, date, compare, utc

Swift: Comparer la date par jours - swift, date, comparer, utc

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 № 1

Essayez 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")
}

résultat

entrer la description de l'image ici