Swift - Integer conversion to Hours/Minutes/Seconds

后端 未结 23 1219
無奈伤痛
無奈伤痛 2020-11-28 01:47

I have a (somewhat?) basic question regarding time conversions in Swift.

I have an integer that I would like converted into Hours / Minutes / Second

23条回答
  •  爱一瞬间的悲伤
    2020-11-28 02:17

    Swift 4 I'm using this extension

     extension Double {
    
        func stringFromInterval() -> String {
    
            let timeInterval = Int(self)
    
            let millisecondsInt = Int((self.truncatingRemainder(dividingBy: 1)) * 1000)
            let secondsInt = timeInterval % 60
            let minutesInt = (timeInterval / 60) % 60
            let hoursInt = (timeInterval / 3600) % 24
            let daysInt = timeInterval / 86400
    
            let milliseconds = "\(millisecondsInt)ms"
            let seconds = "\(secondsInt)s" + " " + milliseconds
            let minutes = "\(minutesInt)m" + " " + seconds
            let hours = "\(hoursInt)h" + " " + minutes
            let days = "\(daysInt)d" + " " + hours
    
            if daysInt          > 0 { return days }
            if hoursInt         > 0 { return hours }
            if minutesInt       > 0 { return minutes }
            if secondsInt       > 0 { return seconds }
            if millisecondsInt  > 0 { return milliseconds }
            return ""
        }
    }
    

    useage

    // assume myTimeInterval = 96460.397    
    myTimeInteval.stringFromInterval() // 1d 2h 47m 40s 397ms
    

提交回复
热议问题