Spaces:
Sleeping
Sleeping
File size: 1,261 Bytes
6ee917b | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | import Foundation
extension DispatchTime {
/// Nicely format elapsed time
func timeElapsedPretty() -> String {
let seconds = Double((DispatchTime.now().uptimeNanoseconds - uptimeNanoseconds)) / 1_000_000_000
return seconds.asSecondsPrettyPrint
}
}
extension Double {
var asSecondsPrettyPrint: String {
let milliseconds = self * 1000
let seconds = self
let minutes = self / 60
let hours = self / 3600
if milliseconds < 5 {
return "\(milliseconds.round(digits: 2))ms"
}
if milliseconds < 20 {
return "\(milliseconds.round(digits: 1))ms"
}
if milliseconds < 800 {
return "\(Int(milliseconds.round(digits: 0)))ms"
}
if milliseconds < 5_000 {
return "\(seconds.round(digits: 2))s"
}
if milliseconds < 20_000 {
return "\(seconds.round(digits: 1))s"
}
if milliseconds < 180_000 {
return "\(Int(seconds.round(digits: 0)))s"
}
if milliseconds < 1000 * 60 * 90 {
return "\(Int(minutes.round(digits: 0)))m"
}
return "\(Int(hours).zeroPadded(len: 2)):\((Int(minutes) % 60).zeroPadded(len: 2))"
}
}
|