2017-02-11 47 views
0

我使用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
  • 爲了準確性,請確保您返回一個浮點數(我使用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" 

欲瞭解更多信息,請參閱Time#strftime官方的Ruby文檔。

+0

感謝來自[answer](http://meta.stackexchange.com/a/23823)的針對降價問題的評論。 –

+0

有沒有什麼辦法可以調整上述內容,如果沒有小數秒(即「.0」),「.0」就不會顯示? – Dave

+0

@Dave說實話,這是一個棘手的問題。唯一能想到的就是用'.sub(/ \。0 \ z /,'')'在你的方法中追加第二行。但是這看起來很笨拙和不雅。 –

相關問題