彼此相邻创建的两个 NSDates 比较不相等
Two NSDates created next to each other do not compare equal
此代码比较了一个接一个创建的两个 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)
每当我运行这个(在操场上或者[我把它从我的项目文件拉到操场上来测试东西]在模拟器中)它给我"That was a (insert day here) instead of "今天 是(在这里插入一天)。这是为什么?
日期不相同,您可以使用
轻松验证
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 日以来的秒数。
此时间跨度包括 小数秒。
chosenDate
和currentDate
的值不一样。如果打印日期值,您会发现它们不同,可能相差几毫秒。
如果要检查天是否相同,需要尝试NSCalendar
方法compareDate:toDate:toUnitGranularity:
您可以使用NSCalendarUnitDay
来比较日期是否在同一天。
此代码比较了一个接一个创建的两个 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)
每当我运行这个(在操场上或者[我把它从我的项目文件拉到操场上来测试东西]在模拟器中)它给我"That was a (insert day here) instead of "今天 是(在这里插入一天)。这是为什么?
日期不相同,您可以使用
轻松验证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 日以来的秒数。
此时间跨度包括 小数秒。
chosenDate
和currentDate
的值不一样。如果打印日期值,您会发现它们不同,可能相差几毫秒。
如果要检查天是否相同,需要尝试NSCalendar
方法compareDate:toDate:toUnitGranularity:
您可以使用NSCalendarUnitDay
来比较日期是否在同一天。