快速的时间比较

时间:2014-06-19 21:28:15

标签: ios swift

问题:

我需要比较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)并比较那些......但是当你超过小时障碍时,这会变得很奇怪。

4 个答案:

答案 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日期,并将较早的日期作为参数传递,这将给出时差

相关问题