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