Сравнение времени в быстром
Вопрос:
Мне нужно сравнить 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
даты на более позднюю дату и передать более раннюю дату в качестве параметра, это даст разницу во времени