2016-02-09 66 views
0

鑑於這一功能:比較同一日期返回OrderedAscending

func isLessThanDate(dateToCompare: NSDate) -> Bool { 
     var isLess = false 
     print(self) 
     print(dateToCompare) 
     if self.compare(dateToCompare) == NSComparisonResult.OrderedAscending { 
      isLess = true 
     } 
     return isLess 
    } 

我得到OrderedAscending具有相同的日期。 enter image description here

+1

毫秒的差異可能。你是如何創建日期的? – Sulthan

+0

它們是對象的更新日期,但我看不到毫秒差異,如何打印nsdate的毫秒以證明您的語句? – Godfather

+0

'print(self.timeIntervalSince1970)'''print(dateToCompare.timeIntervalSince1970)' – luk2302

回答

2

如果你想忽略毫秒的差異,你可以使用floor上兩個日期,但不知道你的代碼的確切意圖,我不知道如果這是你真正想要的東西。使用NSCalendar函數查看有關此答案的評論。

BTW,您可以簡化的功能,如果你直接返回一個布爾值,而不是使用isLess變量:

func isLessThanDate(dateToCompare: NSDate) -> Bool { 
    return self.compare(dateToCompare) == NSComparisonResult.OrderedAscending 
} 
+1

在樓層上使用'floor'日期並不是最穩定的解決方案。最好的方法是使用'NSCalendar'函數將毫秒設置爲零。 – Sulthan

+0

@Sulthan:你可以解釋你的推理。我個人認爲這是無稽之談。或者您認爲有任何日曆的UTC偏移量不是整秒數? – gnasher729

+0

沒有什麼特別的理由使用'NSCalendar'來四捨五入一個'NSDate'的小數秒。 –