Swift - 如何检查昨天的NSDate是否与当前时间相比?

时间:2016-08-07 03:29:58

标签: ios swift debugging nsdate

我有一个NSDate值。我需要检查(比较系统当前时间)是否是昨天。我认为这很简单,因为我可以从我的NSDate和+1中提取日值以进行比较。但不久之后,我意识到这是一个不恰当的想法,因为如果它在月底结束,比如7月31日。第二天不是7月32日,是8月1日。

检查NSDate昨天是否是最有效的方法(与当前时间比较)是什么?

3 个答案:

答案 0 :(得分:13)

从iOS 8.0开始,您可以使用-[NSCalendar isDateInYesterday:],如下所示:

let calendar = NSCalendar.autoupdatingCurrentCalendar()

let someDate: NSDate = some date...
if calendar.isDateInYesterday(someDate) {
    // It was yesterday...
}

如果您要做很​​多事情,您应该创建一次日历并将其保存在实例变量中,因为创建日历对象并非易事。

答案 1 :(得分:6)

Swift 3.0 中,API已更改:

NSCalendar.current.isDateInToday(yourDate)
NSCalendar.current.isDateInYesterday(yourDate)
NSCalendar.current.isDateInTomorrow(yourDate)

获取当前日期:

let now = Date()

答案 2 :(得分:0)

这是Swift中的扩展程序,用于检查日期是否为过期日期。

extension Date {
    var isPastDate: Bool {
        return self < Date()
    }

    func isYesterday() -> Bool {
        return Calendar.current.isDateInYesterday(self)
    }
}

用法:

let someDate = Date().addingTimeInterval(1)
DispatchQueue.main.asyncAfter(deadline: .now() + 3) {
    print(date.isPastDate)
}