Quick actions

cmd+k|ctrl+k

Navigation

Languages

convert seconds -> (hours, minutes, seconds) [fails on glot.io but not in Xcode]

Snippet info

Language

Swift

Visibility

public

Author

rae

Created

2019-02-25T18:21:51Z

Updated

2019-02-25T18:22:38Z

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")
INFO