import Foundation
func convert<MeasurementType: BinaryInteger>(
count: MeasurementType,
duration: UnitDuration
) -> (MeasurementType, MeasurementType) {
let measurementSeconds = Measurement<UnitDuration>(value: Double(count), unit: .seconds)
let secondsCount = MeasurementType(measurementSeconds.converted(to: duration).value)
let measurementCurrentUnit = Measurement(value: Double(secondsCount), unit: duration)
let currentUnitCount = MeasurementType(measurementCurrentUnit.converted(to: .seconds).value)
return (secondsCount, count - currentUnitCount)
}
func hrMinSec<MeasurementType: BinaryInteger>(seconds: MeasurementType) -> (MeasurementType, MeasurementType, MeasurementType) {
let hrSeconds = convert(count: seconds, duration: .hours)
let minSeconds = convert(count: hrSeconds.1, duration: .minutes)
return (hrSeconds.0, minSeconds.0, minSeconds.1)
}
let hrsMinsSecsTuple = hrMinSec(seconds: 27005)
print("\(hrsMinsSecsTuple.0) Hours \(hrsMinsSecsTuple.1) Minutes \(hrsMinsSecsTuple.2) Seconds")