此代码比较了一个接一个地创建的两个NSDate
,并没有像我期望的那样输入.OrderedSame
个案。
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)
每当我运行它(在操场上或[我从模拟器中将其从我的项目文件中拉到游乐场中测试]时)它给了我“那 a(在这里插入一天)而不是“今天是一个(在这里插入日期)。这是为什么?
答案 0 :(得分:4)
chosenDate
和currentDate
的值不一样。如果您打印日期的值,您将看到它们不同,可能只有几毫秒。
如果您想检查天是否相同,则需要尝试使用NSCalendar
方法compareDate:toDate:toUnitGranularity:
您可以使用NSCalendarUnitDay
来比较日期是否在同一天。
答案 1 :(得分: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日起以秒为单位。
此时间跨度包括小数秒。