问题:
我需要比较2次 - 当前时间和一组。如果设定的时间是将来,请查看剩余的时间,直到所述未来时间。
其他信息:
我目前正在使用
let date = NSDate()
let calendar = NSCalendar.currentCalendar()
let components = calendar.components(.CalendarUnitHour | .CalendarUnitMinute, fromDate: date)
let hour = components.hour
let minutes = components.minute
我偷了另一个关于如何以Int格式获取当前时间的答案。然后我将未来时间分成小时(Int)和分钟(Int)并比较那些......但是当你超过小时障碍时,这会变得很奇怪。
答案 0 :(得分:23)
你有比较功能来比较2 NSDate以了解哪一个更新。它返回NSCompareResults
enum NSComparisonResult : Int {
case OrderedAscending
case OrderedSame
case OrderedDescending
}
从2 NSDate获取距离(以秒为单位),你有.timeIntervalSinceDate()。然后,你知道如何转换为分钟,小时,......
let date1 : NSDate = ...
let date2 : NSDate = ...
let compareResult = date1.compare(date2)
let interval = date1.timeIntervalSinceDate(date2)
答案 1 :(得分:10)
只是添加到@ tyt_g207的答案,我找到了比较方法,但没有找到NSComparisonResult.OrderedDescending
和其他人。我使用类似下面修改过的内容来检查今天日期的到期日期
let date1 : NSDate = expirationDate
let date2 : NSDate = NSDate() //initialized by default with the current date
let compareResult = date1.compare(date2)
if compareResult == NSComparisonResult.OrderedDescending {
println("\(date1) is later than \(date2)")
}
let interval = date1.timeIntervalSinceDate(date2)
答案 2 :(得分:5)
let dateComparisionResult: NSComparisonResult = currentDate.compare("Your Date")
if dateComparisionResult == NSComparisonResult.OrderedAscending
{
// Current date is smaller than end date.
}
else if dateComparisionResult == NSComparisonResult.OrderedDescending
{
// Current date is greater than end date.
}
else if dateComparisionResult == NSComparisonResult.OrderedSame
{
// Current date and end date are same.
}
答案 3 :(得分:4)
在更进一步日期使用timeIntervalSinceDate
日期,并将较早的日期作为参数传递,这将给出时差