Derzeit verwende ich dateA.compare (dateB), aber es gibt einen falschen Wert zurück, wenn zwei Daten bis Sekunden identisch sind.Ich möchte zwei NSDate bis zu Millisekunden vergleichen. Wie macht man das in swift?
Antwort
In einem NSDate
ist der Millisekundenanteil der Bruchteil von NSDate(). timeIntervalSinceReferenceDate
. Sie müssen lediglich zwischen zwei Werten unterscheiden, indem Sie die Daten verwenden, die Sie vergleichen möchten.
Hatte ein wenig Spaß dabei, Operator für NSDates zu überlasten, also hier ist alle Vergleichsoperatoren, die Sie benötigen würden. Das einzige, was Sie anpassen müssen, ist, innerhalb welcher Zeitspanne die Daten in der Variablen timeMargin
gleich sind.
let timeMargin = 0.1
func ==(left: NSDate, right : NSDate) -> Bool {
let leftTime = left.timeIntervalSinceNow
let rightTime = right.timeIntervalSinceNow
let diff = abs(leftTime - rightTime)
return diff <= timeMargin
}
func >(left: NSDate, right : NSDate) -> Bool {
let leftTime = left.timeIntervalSinceNow
let rightTime = right.timeIntervalSinceNow
let marginalTime = leftTime - rightTime
return marginalTime > 0
}
func <(left: NSDate, right : NSDate) -> Bool {
let leftTime = left.timeIntervalSinceNow
let rightTime = right.timeIntervalSinceNow
let marginalTime = leftTime - rightTime
return marginalTime < 0
}
func >=(left: NSDate, right : NSDate) -> Bool {
let leftTime = left.timeIntervalSinceNow
let rightTime = right.timeIntervalSinceNow
let marginalTime = leftTime - rightTime
return marginalTime >= -timeMargin
}
func <=(left: NSDate, right : NSDate) -> Bool {
let leftTime = left.timeIntervalSinceNow
let rightTime = right.timeIntervalSinceNow
let marginalTime = leftTime - rightTime
return marginalTime <= timeMargin
}
Implementierung
let date1 = NSDate()
let date2 = NSDate().dateByAddingTimeInterval(0.08)
date1 == date2 ? "Date1 is equal to Date2" : "Date is NOT equal to Date2"
//Prints("Date1 is equal to Date2")
date1 < date2 ? "Date1 is less than Date2" : "Date is NOT less than Date2"
//Prints("Date is less than Date2")
date1 > date2 ? "Date1 is more than Date2" : "Date is NOT more than Date2"
//Prints("Date1 is NOT more than Date2")
date1 <= date2 ? "Date1 is less than or equal to Date2" : "Date is NOT less than or equal to Date2"
//Prints("Date1 is less than or equal to Date2")
date1 >= date2 ? "Date1 is greater than or equal to Date2" : "Date is NOT more than or equal to Date2"
//Prints("Date1 is greater than or equal to Date2")
Hinweis:
Mit dateByAddingTimeInterval
hat die EXACT Zuwachs zu der Zeit nicht immer zurück. ich. e. NSDate().dateByAddingTimeInterval(0.10)
Könnte in der Realität 0,100hinzufügen und daher würde es ein unerwünschtes Ergebnis zurückgeben, wenn es sich um einen Haarlinienanteil handelt, der kleiner oder größer als Ihr Zeitabstand ist. Seien Sie also vorsichtig, wenn Sie dies vor dem Vergleich der Daten verwenden.
- 1. konvertieren Millisekunden NSDate
- 2. Wie zwei Datetimes zu vergleichen
- 3. Wie zwei Swift-MT-Nachricht zu vergleichen?
- 4. Swift, wie man Zeichenfolge in NSDate konvertiert
- 5. Swift Volldatum mit Millisekunden
- 6. vergleichen Client-Gerät Uhr mit Server-Uhr genau bis Millisekunden
- 7. Wie NSDate in Swift verspotten?
- 8. Wie konvertiert NSDate in Objective C in Millisekunden?
- 9. Vergleichen eines NSDate mit [NSDate date]
- 10. Swift: Wie bekomme ich Wochentag von nsdate
- 11. Ich möchte eine Schleife implementieren, aber ich weiß nicht, wie man das macht
- 12. Wie konvertiert man Unix Timestamp in Swift NSDate Objekt?
- 13. Vergleichen Sie zwei NSDate von · Tag in Swift ist falsch Ergebnisse geben
- 14. Wie man Tag, Monat und Stunde von NSDate in Swift
- 15. Wie kann man Enum in swift vergleichen?
- 16. Wie zwei Dateien in Eclipse zu vergleichen?
- 17. wie man Schleife macht, bis ich positiv definite Matrix bekomme?
- 18. SWIFT: Wie füge ich Stunden zu NSDate-Objekt
- 19. Versuchen, Firebase Timestamp in NSDate in Swift
- 20. Wie man teilweise zwei Diagramme vergleichen
- 21. möchte ich NSString zu NSDate aber UIPickerView zeigt aktuelle Datum
- 22. Wie zwei DateTimeOffSet zu vergleichen?
- 23. Wie zwei fileStat.mtime in Nodejs zu vergleichen?
- 24. Wie zwei Gesichter in Android zu vergleichen
- 25. Swift: Drucken Sie alle Termine zwischen zwei NSDate()
- 26. Wie zwei Zeilen in MySQL zu vergleichen
- 27. Wie zwei Datenbanken zu vergleichen?
- 28. Wie man Datumsumwandlung macht?
- 29. Wie zwei Strings in Actionscript 3 alphabetisch zu vergleichen
- 30. Wie zwei Abfragen zu vergleichen?
Können Sie einen [MCVE] bereitstellen? – IanS