检查两个NSDate实例是否包含相同的日期值

时间:2015-11-19 20:17:58

标签: ios swift

我是Swift的新手。 我有一个很大的(仅适合我)问题。 我有NSUserDefaults我需要在每天结束时删除。 我知道我需要比较日期,但我不知道该怎么做。

2 个答案:

答案 0 :(得分:0)

给出两个日期dataAdateB

    let calendar = NSCalendar.currentCalendar()
    var componantsA = calendar.components(NSCalendarUnit.MonthCalendarUnit | NSCalendarUnit.YearCalendarUnit | NSCalendarUnit.DayCalendarUnit, fromDate:dateA)
    var componantsB = calendar.components(NSCalendarUnit.MonthCalendarUnit | NSCalendarUnit.YearCalendarUnit | NSCalendarUnit.DayCalendarUnit, fromDate:dateB)

    var sameDay:Bool = (componantsA.day == componantsB.day) && (componantsA.month == componantsB.month) && (componantsA.year == componantsB.year)

答案 1 :(得分:0)

你应该使用NSCalendar方法isDate(inSameDayAsDate :),所以我们可以创建一个NSDate扩展,使用该方法返回一个布尔值:

extension NSDate {
    struct Calendar {
        static let gregorian = NSCalendar(calendarIdentifier: NSCalendarIdentifierGregorian)!
    }
    func isInSameDayAs(date date: NSDate) -> Bool {
        return Calendar.gregorian.isDate(self, inSameDayAsDate: date)
    }
}

用法:

let date1 = NSDate()
let date2 = NSDate().dateByAddingTimeInterval(60)

if date1.isInSameDayAs(date: date2 ){
    print("true")   // "true\n"
} else {
    print("false")
}