Здесь функция, которая может быть полезна, так как возвращает дату -4 ч, учитывая, что это также может изменить дату, месяц и, в конечном итоге, год. Опция .searchBackward является важной частью:)
public static func correctSecondComponent(date: Date, calendar: Calendar = Calendar(identifier: Calendar.Identifier.gregorian))->Date {
let hour = calendar.component(.hour, from: date)
let e = (calendar as NSCalendar).date(byAdding: NSCalendar.Unit.hour, value: -4, to: date, options:.searchBackwards)!
return e
}