2017-02-11 7 views
0

私は、より読みやすい形式でミリ秒単位でduraitonを表示助けることになっている方法持っているRailsの5を使用しています(時間:分:秒)...時間フォーマット機能で秒数分を表示するにはどうすればよいですか?

これは基本的に正常に動作します
def time_formatted time_in_ms 
    regex = /^(0*:?)*0*/ 
    Time.at(time_in_ms/1000).utc.strftime("%H:%M:%S").sub!(regex, '') 
    end 

、ミリ秒単位の時間が1秒未満の場合、完全に正確には機能しません。ミリ秒単位の時間が

2486300 

上記ディスプレイ

41:26 

であれば、ですが、本当にそれはまた、画分が表示されますので、私は私の機能を調整することができますどのように

41:26.3 

が表示されます何かがあると仮定して、秒の?

答えて

1
  • 正確性を確認するには、フロートを返すようにしてください(これを行うにはto_fを使用しています)。
  • ".%1N"の引数をstrftimeに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を参照してください。

+0

マークダウンの問題については、この[回答](http://meta.stackexchange.com/a/23823)からのコメントのおかげで –

+0

「.0」が表示されない秒数(つまり「.0」)がない場合、上記を調整する方法はありますか? – Dave

+0

@Daveそれは正直言ってやっかいなことです。私が考えることができるのは、 '.sub(/ \。0 \ z /、 '')'メソッドで2行目を追加することだけです。しかし、これはかなり不器用で控えめなようです。 –

関連する問題