在比较日期 Swift 2 时订购相同但未返回结果

ordered same not returning result in comparison of dates Swift 2

当我 运行 使用 OrderedDescending 或 OrderedAscending 而不是 OrderedSame 时,即使新年的日期相同,我也会得到结果。

let dateFormatter = NSDateFormatter()
    dateFormatter.dateFormat = "mm/dd/yyyy"

    let christmas = dateFormatter.dateFromString("12/25/2015")

    let newyear = dateFormatter.dateFromString("11/29/2015")

    let update = dateFormatter.dateFromString("02/01/2016")

    let date2 = NSDate()

    if date2.compare(newyear!) == NSComparisonResult.OrderedSame {

        let alertController = UIAlertController(title: "", message:
            "Happy New Year. ", preferredStyle: UIAlertControllerStyle.Alert)
        alertController.addAction(UIAlertAction(title: "Dismiss", style: UIAlertActionStyle.Default,handler: nil))

        self.presentViewController(alertController, animated: true, completion: nil)

    }

    if date2.compare(christmas!) == NSComparisonResult.OrderedDescending {

        let alertController = UIAlertController(title: "", message:
            "Merry Christmas.", preferredStyle: UIAlertControllerStyle.Alert)
        alertController.addAction(UIAlertAction(title: "Dismiss", style: UIAlertActionStyle.Default,handler: nil))

        self.presentViewController(alertController, animated: true, completion: nil)

    }De

您的第一个问题是日期格式。你需要"MM/dd/yyyy"。此外,NSDate() returns 当前日期(包括时间),因此它与不包括给定时间的格式 "MM/dd/yyyy" 中的日期不完全相同,即使年是一样的。所以你应该使用NSCalendar的日期比较函数,使用单位粒度.Day,而不是NSDate的比较函数。

let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "MM/dd/yyyy"

let newyear = dateFormatter.dateFromString("11/29/2015")
let date2 = NSDate() // Currently 11/29/2015

let order = NSCalendar.currentCalendar().compareDate(newyear!, toDate: date2,
    toUnitGranularity: .Day)

if order == NSComparisonResult.OrderedSame {
        print("same")
}