swift - 彼此相邻创建的两个 NSDates 比较不相等

标签 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)

每当我在模拟器中运行它(在 Playground 上或[我将其从我的项目文件中拉到 Playground 上以测试东西])时,它都会给我“那一个(在这里插入一天)而不是“今天是(在这里插入一天)。这是为什么?

最佳答案

chosenDatecurrentDate 的值不一样。如果打印日期值,您会发现它们不同,可能相差几毫秒。

如果你想检查days是否相同,你需要尝试NSCalendar方法compareDate:toDate:toUnitGranularity:

您可以使用 NSCalendarUnitDay 来比较日期是否在同一天。

关于swift - 彼此相邻创建的两个 NSDates 比较不相等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36830788/

相关文章:

switch-statement - 在 switch 中使用 break 语句

ios - Swift MKMapView KVO

java - 使用 Maven 编译并执行 JDK 预览功能

ios - Swift 初始化方法错误 : Declaration 'init(coder:)' cannot override more than one superclass declaration

macos - 检测 <Secure/SecRandom.h> 的可用性?

iphone - 从 super View 中删除后保持图像在 View 中

objective-c - UIAlertView 有 19 个按钮

C - 在 for 循环中切换后的代码被忽略

Swift 3 核心数据 - NSExpression forFunction : "sum:" throws error ("could not cast dictionary to Day")

ios - 应用程序在 sendEvent 方法上崩溃