如何在我的时间格式化功能中显示一秒的分数?

时间:2017-02-11 21:16:08

标签: ruby-on-rails ruby time ruby-on-rails-5 duration

我正在使用Rails 5.我有一个方法可以帮助以更可读的格式(小时:分钟:秒)显示一个duraiton毫秒......

  def time_formatted time_in_ms 
    regex = /^(0*:?)*0*/ 
    Time.at(time_in_ms/1000).utc.strftime("%H:%M:%S").sub!(regex, '') 
  end

这种方法基本上很好,但是当毫秒级的时间包含几分之一秒时,它不能完全准确地工作。也就是说,如果以毫秒为单位的时间是

2486300

以上显示

41:26

但实际上它应该显示

41:26.3

我如何调整我的功能,这样它也会显示几分之一,假设有任何?

1 个答案:

答案 0 :(得分:1)

  • 为了准确,请确保您返回一个浮点数(我已使用to_f执行此操作)。
  • 将参数附加到strftime ".%1N",持续1位毫秒。
def time_formatted time_in_ms
  regex = /^(0*:?)*0*/ 
  Time.at(time_in_ms.to_f/1000).utc.strftime("%H:%M:%S.%1N").sub!(regex, '') 
end

time_formatted 2486300
#=> "41:26.3"

有关更多信息,请参阅官方Ruby文档中的Time#strftime