2016-04-25 62 views
0

此代碼比較兩個創建的NSDate,它們並不像我所期望的那樣輸入.OrderedSame創建兩個相鄰的NSDates並不相等

import UIKit 

let chosenDate = NSDate() 

let currentDate = NSDate() 

let formatter = NSDateFormatter() 
formatter.dateFormat = "EEEE" 

let day = formatter.stringFromDate(chosenDate) 

var result = String() 

switch chosenDate.compare(currentDate) { 

case .OrderedSame: 
    result = "Today is a \(day)" 
    break 
case .OrderedAscending: 
    result = "That was a \(day)" 
    break 
case .OrderedDescending: 
    result = "That will be a \(day)" 
    break 
} 

print(result) 

每當我運行這個(在操場或[我把它放到操場,從我的項目文件來測試的東西在模擬器),它給了我「這一個(插天在這裏),而不是「今天是(插入日在這裏)。爲什麼是這樣?

回答

4

chosenDatecurrentDate的值不相同。如果您打印日期的值,則會看到它們不同,可能會持續幾毫秒。

如果你想檢查都是一樣的,你需要嘗試的NSCalendar方法compareDate:toDate:toUnitGranularity:

您可以使用NSCalendarUnitDay比較,如果日期是在同一天。

+1

只是*打印*日期不會顯示差異,因爲默認描述方法不包括小數秒。但關於'compareDate:toDate:toUnitGranularity:'的好建議! –

3

日期是一樣了,你可以用

let chosenDate = NSDate() 
let currentDate = NSDate() 

print(chosenDate.timeIntervalSinceReferenceDate) 
print(currentDate.timeIntervalSinceReferenceDate) 
print(currentDate.timeIntervalSinceDate(chosenDate)) 

示例輸出驗證容易:

483241075.692769 
483241075.692773 
3.99351119995117e-06 

NSDate代表一個時間點,存儲爲NSTimeInterval (又名Double),自2001年1月1日起以秒計。 此時間範圍包括fractional seco nds