Сравнение AM и PM (NSDate)

У меня есть два раза в формате String:

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)

преобразование одного и двух выходов меня

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

Я сравниваю два раза, но я хочу, чтобы он возвращал 7 минут, тогда как я получаю "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"

1 ответ

Ваше понимание времени утра и вечера кажется ложным.

Разница не в 7 минутах, первая - сразу после полуночи, вторая - 65 минут после полудня.

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

Другие вопросы по тегам