2015-06-11 7 views
1

Я пишу гоночное приложение и хочу преобразовать большое количество миллисекунд в минуты: seconds.milliseconds (например, 1:32.361). На данный момент я просто делаю это через математику (minutes/60000), затем получаю остаток и делим дальше и т. Д., Но я нахожу, что время от времени оно составляет 1 миллисекунду. Я знаю, что это может показаться не очень важным, но я попытался найти среднее значение 1:32.004 и 1:32.004, и оно вернулось 1:32.003, что означает, что он попадает неправильно, а остальная часть приложения не может справиться с этим.Swift - конвертировать миллисекунды в минуты, секунды и миллисекунды

Есть ли способ использовать NSDate или NSDateFormatter или что-то в этом роде для форматирования миллисекунд в MM: ss.mmm?

Я смотрел на этих источниках, но не нашел ответ:

How to convert milliseconds into minutes?
Convert seconds into minutes and seconds
Convert milliseconds to minutes
http://www.codingexplorer.com/swiftly-getting-human-readable-date-nsdateformatter/

+0

Не видя кода трудно судить, почему вы получите неточную результат «то и» ... Как миллисекунды представлены (как целое число или число с плавающей точкой)? Как вы конвертируете? Как вам вычислить среднее? –

ответ

12

Вы можете создать TimeInterval расширения для форматирования истекшего времени следующим образом:

Xcode 8.3.3 • Swift 3.1

extension TimeInterval { 
    var minuteSecondMS: String { 
     return String(format:"%d:%02d.%03d", minute, second, millisecond) 
    } 
    var minute: Int { 
     return Int((self/60).truncatingRemainder(dividingBy: 60)) 
    } 
    var second: Int { 
     return Int(truncatingRemainder(dividingBy: 60)) 
    } 
    var millisecond: Int { 
     return Int((self*1000).truncatingRemainder(dividingBy: 1000)) 
    } 
} 

extension Int { 
    var msToSeconds: Double { 
     return Double(self)/1000 
    } 
} 

let seconds = 131.531 // 131.531 
let time = seconds.minuteSecondMS // "2:11.531" 
let millisecond = seconds.millisecond // 531 

let ms = 1111 
let sec = ms.msToSeconds.minuteSecondMS // "0:01.111" 
+1

Большое спасибо, работает с удовольствием –

+0

@MattKelly добро пожаловать –

Смежные вопросы