2016-12-22 18 views
-2

私はナノ秒から分に時間を変換しようとしています。 マイコードは以下のようになります。JavaでTimeUnit.convert()が正しく変換されないのはなぜですか?

long startTime=System.nanoTime(); 
//some code... 
long endTime=System.nanoTime(); 
long estimatedTime=endTime-startTime; 

long estimatedTime2=TimeUnit.MINUTES.convert(estimatedTime, TimeUnit.NANOSECONDS); 
System.out.println(estimatedTime2 +","+estimatedTime); 

出力:のJavaDocによると

estimatedTime is always in nanoseconds 
estimatedTime2 is always 0; 

からTimeUnit

public long convert(long sourceDuration, TimeUnit sourceUnit) 

estimatedTime2にlongを返すように仮定法。

このコンバージョンタイプを使用する正しい形式は何ですか。

ありがとう!

+1

[MCVE]または[sscce ](http://sscce.org)をご覧ください。 –

+3

estimatedTime2が常に0になる可能性は、あなたのstartTimeとendTimeの間に十分な時間がないために計算されたestimatedTimeが0であることが原因である可能性があります。 –

+0

はestimatedTimeを出力します。推定時間も印刷し、その値を参照してください。値が小さすぎても分に変換できない場合は、常にゼロになります。 –

答えて

2

endTimeとstartTimeの差が1分を超えていない限り、答えはゼロです。あなたは、単にすべてのオーバーヘッドなしに手でそれを行うことができ

+0

ありがとうございます!それで、60秒未満の時間を分に変換するエレガントな方法はありますか?分割するためにハードコードされた番号を使用することなく。 –

0

(ない小数点を意味しない)変換()の戻り値がfloatまたはdoubleではないことに注意してください -

float minutesElapsed = estimatedTime/1000/1000/1000/60; 

nano/1000 -> micro/1000 -> milli/1000 -> sec/60 -> minutes 
関連する問題