目前我使用的是dateA.compare(dateB),但如果兩個日期相同直到秒,它會返回錯誤的值。我想比較兩個NSDate upto毫秒。如何迅速做到這一點?
-6
A
回答
1
在NSDate
毫秒部分是NSDate(). timeIntervalSinceReferenceDate
的小數部分。您只需使用您想比較的日期來區分兩個值。
0
爲NSDates做操作符重載有一點樂趣,所以這裏是所有您需要的比較運算符。唯一需要調整的是在變量timeMargin
中等於日期的時間範圍內。
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
}
實施
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")
注:
使用dateByAddingTimeInterval
沒有確切的增量總是返回時間。一世。即NSDate().dateByAddingTimeInterval(0.10)
實際上可能會添加0.100,因此如果它是小於或大於您的時間裕度的細線部分,它會返回不希望的結果。所以在比較日期前如果使用這個,請小心。
相關問題
- 1. 如何比較迅速
- 2. 比較datetime毫秒
- 3. 如何清除NSDate毫秒
- 4. NSDate,比較兩個日期
- 5. 如何比較兩個DateTime到秒?
- 6. 比較兩個NSDate失敗
- 7. 轉換和微秒和毫秒比較
- 8. 如何比較兩次以毫秒爲單位的精度?
- 9. 迅速比較字典值
- 10. 我想做到這一點在SQL Server
- 11. 轉換毫秒的NSDate
- 12. 如何迅速
- 13. 我想從x.CreatedDate中獲取年份如何做到這一點?
- 14. PHP - 比較時間與毫秒
- 15. 實體SQL比較datetime毫秒
- 16. 比較日期存儲爲毫秒
- 17. Android比較時間和毫秒
- 18. 我想做一個倒計時秒錶
- 19. 是否可以將一個MySQL TIMESTAMP與毫秒進行比較?
- 20. Swift NSDate比較
- 21. 兩個表迅速
- 22. NSDate比較
- 23. 如何做到這一點?
- 24. 我想一次保存3個實體條目。如何做到這一點
- 25. 如何做到這一點?
- 26. Facebook如何做到這一點?
- 27. 毫秒到秒?
- 28. 迅速 - 比較結構符合協議
- 29. 比較本地圖片迅速
- 30. 我想寫一個查詢,但似乎可以想辦法做到這一點
你能提供[MCVE]嗎? – IanS