Also versuche ich eine Reihe von Daten aus meiner Datenbank (Strings, die ich in NSdates umwandele) mit dem aktuellen Datum zu vergleichen.Vergleicht man zwei NSDates gibt falsch positive Ergebnisse zurück
Wenn ich den Code für ein Beispiel-Datum ausführen: 2016-07-17 12:28:51 +0000
gibt es falsch positive Ergebnisse für den Vortag (gestern) zurück.
Console Ausgabe:
Optional(2016-07-15 22:00:00 +0000)
DAY IN THE PAST
Optional(2016-07-15 22:00:00 +0000)
DAY IN THE PAST
Optional(2016-07-16 22:00:00 +0000)
SAME DAY
Optional(2016-07-16 22:00:00 +0000)
SAME DAY
Optional(2016-07-16 22:00:00 +0000)
SAME DAY
Ich sehe nicht, was ich falsch hier tun. Code:
let dateToday = NSDate() // example: 2016-07-17 12:28:51 +0000
print(dateToday)
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd"
let openDB = realm.objects(Article)
for item in openDB {
let getItem = item.toDate
let date = dateFormatter.dateFromString(getItem!)
let order = NSCalendar.currentCalendar().compareDate(dateToday, toDate: date!,
toUnitGranularity: .Day)
print(date) //example 2016-07-17 22:00:00 +0000
switch order {
case .OrderedDescending:
print("DAY IN THE PAST")
case .OrderedAscending:
print("FUTURE DATE")
case .OrderedSame:
print("SAME DAY")
}
Bitte beachten Sie, dass ich muss nur die Termine selbst überprüfen, ich kümmere mich nicht um die Zeit (Stunden, Minuten).
Nicht sicher, ob das wichtig ist, aber ich werde nur diese Info hinzufügen: Im Allgemeinen habe ich das Datum meines Geräts auf den 17. zum Testen geändert. Vielleicht verursacht das einige Probleme mit dem Code? – SoundShock
Sind Sie in der Zeitzone GMT + 2? Dann ist "2016-07-16 22:00:00 + 0000" "2016-07-17 00:00:00 + 0200" entsprechend Ihrer Zeitzone und am selben Tag wie das angegebene Datum. –
@MartinR Ich glaube, ich bin tatsächlich in einer GMT +02: 00 Zeit (Belgien), da es Sommerzeit ist. Also ist es egal, dass mein Code die Stunden und Minuten ignoriert? wegen der 22 und meiner 2+ GMT ändert es das Datum? Wie kann ich es manuell beheben? Ich habe nie die 22:00:00 in meinem Code hinzugefügt, es scheint nur zu passieren, wenn die Konvertierung zu dateFormatter.dateFormat = "yyyy-MM-dd" – SoundShock