在比较日期 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")
}
当我 运行 使用 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")
}