2016-06-10 5 views

Antwort

1

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.

0

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.

Verwandte Themen