Прежде всего, будьте очень осторожны с математикой даты / времени, это не прямолинейное преобразование, есть множество правил, которые обходят его и делают его ... сложным.
Первыйвам нужно рассчитать разницу между двумя значениями, к счастью для вас, это относительно просто ...
var boardingTime = Date()
boardingTime = bordingTime.addingTimeInterval(Double.random(in: 0.0..<86400.0))
let now = Date()
let difference = boardingTime.timeIntervalSince(now)
Это дает вам количество секунд между этими двумя значениями (положительное значение быловремя до, отрицательное значение было время после)
Далее, вам нужны часы / минуты в некоторой форме удобочитаемой нотации.Может показаться заманчивым просто начать с умножения и деления всего на 60, но это было бы ошибкой и привело бы вас к вредным привычкам (конечно, на небольшом расстоянии это неплохо, но вы должны быть очень осторожны)
Лучшим решением было бы использовать DateComponentsFormatter
...
let formatter = DateComponentsFormatter()
formatter.allowedUnits = [.hour, .minute]
formatter.unitsStyle = .abbreviated
formatter.string(from: difference)
, который позаботится обо всех «правилах» для вас, но также локализует результаты, всегда бонус.
В приведенном выше примере будет напечатано что-то вроде ...
10h 28m