conversion from NSTimeInterval to hour,minutes,seconds,milliseconds in swift

前端 未结 15 1390
不思量自难忘°
不思量自难忘° 2020-12-07 20:05

My code is here:

func stringFromTimeInterval(interval:NSTimeInterval) -> NSString {

    var ti = NSInteger(interval)
    var ms = ti * 1000
    var secon         


        
15条回答
  •  无人及你
    2020-12-07 20:27

    Here is slightly improved version of @maslovsa's, with Precision input param:

    import Foundation
    
    extension TimeInterval {
    
        enum Precision {
            case hours, minutes, seconds, milliseconds
        }
    
        func toString(precision: Precision) -> String? {
            guard self > 0 && self < Double.infinity else {
                assertionFailure("wrong value")
                return nil
            }
    
            let time = NSInteger(self)
    
            let ms = Int((self.truncatingRemainder(dividingBy: 1)) * 1000)
            let seconds = time % 60
            let minutes = (time / 60) % 60
            let hours = (time / 3600)
    
            switch precision {
            case .hours:
                return String(format: "%0.2d", hours)
            case .minutes:
                return String(format: "%0.2d:%0.2d", hours, minutes)
            case .seconds:
                return String(format: "%0.2d:%0.2d:%0.2d", hours, minutes, seconds)
            case .milliseconds:
                return String(format: "%0.2d:%0.2d:%0.2d.%0.3d", hours, minutes, seconds, ms)
            }
        }
    }
    
    

    and usage:

    let time: TimeInterval = (60 * 60 * 8) + 60 * 24.18
    let hours = time.toString(precision: .hours) // 08
    let minutes = time.toString(precision: .minutes) // 08:24
    let seconds = time.toString(precision: .seconds) // 08:24:10
    let milliseconds = time.toString(precision: .milliseconds) // 08:24:10.799
    

提交回复
热议问题