Сравнение времени в быстром

Вопрос:

Мне нужно сравнить 2 раза - текущее время и заданное. Если заданное время в будущем, узнайте, сколько минут осталось до указанного будущего времени.

Дополнительная информация:

В настоящее время я использую

let date = NSDate()
let calendar = NSCalendar.currentCalendar()
let components = calendar.components(.CalendarUnitHour | .CalendarUnitMinute, fromDate: date)
let hour = components.hour
let minutes = components.minute

который я украл из другого ответа на SO о том, как получить текущее время в формате Int. Затем я разделяю будущее время на час (Int) и минуты (Int) и сравниваю их... Но это становится странным, когда вы переходите через часовой барьер.

Ответ 1

У вас есть функция сравнения, чтобы сравнить 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)

Ответ 2

просто чтобы добавить к @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)

Ответ 3

    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.

    }

Ответ 4

Использовать timeIntervalSinceDate даты на более позднюю дату и передать более раннюю дату в качестве параметра, это даст разницу во времени