彼此相邻创建的两个NSDates不相等

时间:2016-04-25 01:22:57

标签: swift cocoa-touch switch-statement nsdate

此代码比较了一个接一个地创建的两个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(在这里插入一天)而不是“今天是一个(在这里插入日期)。这是为什么?

2 个答案:

答案 0 :(得分:4)

chosenDatecurrentDate的值不一样。如果您打印日期的值,您将看到它们不同,可能只有几毫秒。

如果您想检查是否相同,则需要尝试使用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日起以秒为单位。 此时间跨度包括小数秒