更好的方法是獲得第二天的開始,並減去0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001秒。
你明白我想說什麼嗎?定義一天結束是非常困難的。 23:59當然不是一天結束的時間,直到第二天幾乎還有一分鐘的時間。甚至23:59:59也不是一天結束。因爲在這段時間和第二天的開始之間有無數的秒數。據我所知,NSDate支持納秒開箱即用,所以在目前的實現中,在23:59:59和第二天之間至少有1000萬個可能的NSDate。
這就是爲什麼你應該看看你是否可以找到一種方法來使用第二天的開始。
例如,您可以使用if (startOfDay <= date && date < startOfNextDay)
而不是if (startOfDay <= date && date <= endOfDay)
。
要計算第二天的開始,您必須使用NSCalendar。在iOS8上的蘋果添加了一些很好的方法來進行這些計算短:
let calendar = NSCalendar.currentCalendar()
let startOfDay = calendar.startOfDayForDate(NSDate())
let startOfNextDay = calendar.dateByAddingUnit(.CalendarUnitDay, value: 1, toDate: startOfDay, options: nil)!
編輯:既然你現在狀態,你想查詢你不用找了一天的最後一個數據庫。檢查日期是在一天開始還是在一天開始之後,以及在第二天開始之前。
根據定義一天開始是另一個終點。你能更加描述你期待的輸出嗎? – 2015-03-13 15:19:50