2016-02-09 37 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'的小数秒。 –