2016-07-25 1 views
-1

У меня есть два раза и в формате Строка:Сравнение AM и PM (NSDate)

timeOne = "12:58 AM" 
timeTwo = "1:05 PM" 

преобразовать их в NSDate как этот

func convertTime(tim: String) -> NSDate{ 
let strDate = tim 
let dateFormatter = NSDateFormatter() 
dateFormatter.dateFormat = "HH:mm a" 
//converts into NSDate so we can find the time remaining 
return (dateFormatter.dateFromString(strDate))! 
} 

let tOne = convertTime(timeOne) 
let tTwo = convertTime(timeTwo) 

превращающего тону и tTwo выводит меня

tOne = 2000-01-01 00:58:00 +0000 
tTwo = 2000-01-01 12:05:00 +0000 

Я сравниваю два раза, но я хочу, чтобы он возвращал 7 минут, тогда как im получал '667' Треска е сравнить это:

let calendar = NSCalendar.currentCalendar() 
let components = calendar.components(.Minute, fromDate: tOne, toDate: tTwo, options: []) 
print(components) 

Это печатает

667 

Однако это работает, если оба раза одни и те же AM или PM Что я имею в виду то, что позволяет сказать

tOne = "1:06 PM" 
tTwo = "1:15 PM" 

Выполнение кода сравнения успешно завершает «9»

+0

Какова ценность 'tOne' и' tTwo' в вашем примере? – Larme

+5

Я думаю, что вы ошибаетесь в использовании вами 00:00 - 12:58 утра, имеет смысл только 00:58, а не 12:58, что было бы п.м. = * post meridian * - т. е. «после полудня». Поэтому это время составляет 11 часов 7 минут = 667 минут. – Grimxn

+0

Я отредактировал его и проверил значение –

ответ

1

ваше понимание ng из am и pm times кажется ложным.

Времена не разницы в 7 минут, первая - только после полуночи, вторая - через 65 минут после полудня.

enter image description here

Если вы исправить свой код, предложенный MartinR, правильная разница будет составлять 12 часов и 7 минут.

+0

Спасибо, сейчас работает! –