Swift - 如何检查 NSDate 是否是昨天与当前时间相比?
Swift - How to check if an NSDate is yesterday compare to current time?
我有一个 NSDate
值。我需要检查(与系统当前时间比较)是否是昨天。我认为这很容易,因为我可以从我的 NSDate
和 +1 中提取日期值来进行比较。但不久之后,我意识到这是一个不合适的想法,因为如果是月底,比如说 7 月 31 日。第二天不是 7 月 32 日,而是 8 月 1 日。
检查 NSDate
是否是昨天(与当前时间比较)的最有效方法是什么?
从 iOS 8.0 开始,您可以使用 -[NSCalendar isDateInYesterday:]
,像这样:
let calendar = NSCalendar.autoupdatingCurrentCalendar()
let someDate: NSDate = some date...
if calendar.isDateInYesterday(someDate) {
// It was yesterday...
}
如果您经常这样做,您应该创建一次日历并将其保存在一个实例变量中,因为创建日历对象并不简单。
在 Swift 3/4/5 API 已更改:
Calendar.current.isDateInToday(yourDate)
Calendar.current.isDateInYesterday(yourDate)
Calendar.current.isDateInTomorrow(yourDate)
获取当前日期:
let now = Date()
这是 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)
}
我有一个 NSDate
值。我需要检查(与系统当前时间比较)是否是昨天。我认为这很容易,因为我可以从我的 NSDate
和 +1 中提取日期值来进行比较。但不久之后,我意识到这是一个不合适的想法,因为如果是月底,比如说 7 月 31 日。第二天不是 7 月 32 日,而是 8 月 1 日。
检查 NSDate
是否是昨天(与当前时间比较)的最有效方法是什么?
从 iOS 8.0 开始,您可以使用 -[NSCalendar isDateInYesterday:]
,像这样:
let calendar = NSCalendar.autoupdatingCurrentCalendar()
let someDate: NSDate = some date...
if calendar.isDateInYesterday(someDate) {
// It was yesterday...
}
如果您经常这样做,您应该创建一次日历并将其保存在一个实例变量中,因为创建日历对象并不简单。
在 Swift 3/4/5 API 已更改:
Calendar.current.isDateInToday(yourDate)
Calendar.current.isDateInYesterday(yourDate)
Calendar.current.isDateInTomorrow(yourDate)
获取当前日期:
let now = Date()
这是 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)
}