2009-08-07 3 views
1

У меня есть эта строка, которая показывает минуты и секунды. Но я должен добавить миллисекунды к нему, а также для большей точности. Как добавить это в эту строку, или есть более простой способ получить желаемый результат?ruby ​​on rails int to minutes :: seconds :: milliseconds

@duration = [cd.ExactDuration/60000000, cd.ExactDuration/1000000 % 60].map{|t| t.to_s.rjust(2, '0') }.join(':')) 

Точный тип продолжительности сохраняется в микросекундах. Таким образом, первая конвертируется в микросекунды в минуты, вторая - от микросекунд до нескольких секунд. Теперь мне нужно добавить миллисекунды.

ответ

2

cd.ExactDuration/1000 % 1000 должен сделать трюк.

Конечно, вы также можете настроить форматирование, так как это базовая точка, которую вы не хотите выравнивать по правому краю в поле шириной 2 ;-). Я бы предложил sprintf для форматирования строк, хотя я понимаю, что его использование на самом деле не интуитивно, если вы не используете фон C.

+0

Это работает, есть ли способ сделать его точным только для двух последних цифр. Например, мой последний ответ 00: 03: 109 Я бы хотел 00:03:11 – Ryan

+0

Конечно, тогда вы * НЕ * хотите миллисекунды, как вы сказали, но сто секунд (сотых доли секунды) - - и тогда вам не нужно настраивать форматирование ;-). '((cd.ExactDuration + 5000)/10000)% 100' сделает это, включая округление, которое вы теперь подразумеваете. –

+0

гений, спасибо. – Ryan