Ваша проблема в том, что вы вычитаете 13 часов из 12 12 - (totalSec/60)
вместо того, чтобы вычитать 12 из 13 (totalSec/60) - 12
.
Так что вам просто нужно просто изменить
let min = (totalSec/60) > 12 ? 12 - (totalSec/60) : (totalSec/60)
до
let min = (totalSec/60) > 12 ? (totalSec/60) - 12 : (totalSec/60)
Я бы также изменил формат строки на "%02d:%02d %@"
, и ваше имя переменной вводит в заблуждение (вы используете totalSec, где фактически указано общее количество минут), и нет необходимости вычислять общее количество минут:
let houRString = "13"
let minTString = "30"
if let hour = Int(houRString), let min = Int(minTString) {
let hourAMPM = hour > 12 ? hour - 12 : hour
let amPM = hour > 12 ? "PM" : "AM"
print(String(format: "%02d:%02d %@", hourAMPM, min, amPM)) // "01:30 PM\n"
}