実行されたコード:
String lapTime = "27:10.190";
int minutes = Integer.parseInt(lapTime.substring(0, lapTime.indexOf(":")));
int seconds = Integer.parseInt(lapTime.substring(lapTime.indexOf(":")+1, lapTime.indexOf(".")));
int milliseconds = Integer.parseInt(lapTime.substring(lapTime.indexOf(".")+1));
LocalTime localTime = LocalTime.of(0, minutes, seconds, milliseconds);
ミリ秒の数を得る方法はLocalTime localTime = LocalTime.of(0, minutes, seconds, milliseconds);
?
TL; DRDuration
ではなく、使用しLocalTime
ます。回答の終わりを参照してください。
の4番目の引数LocalTime.of()
はナノ秒であり、ミリ秒ではないことに注意してください。これは、印刷するとわかりますlocalTime
。
System.out.println(localTime); // prints: 00:27:10.000000190
したがって、コードを次のように変更する必要があります。
LocalTime localTime = LocalTime.of(0, minutes, seconds, milliseconds * 1000000);
System.out.println(localTime); // prints: 00:27:10.190
あなたが望んでいた場合はmilliseconds
値の背中を、呼んgetLong(TemporalField field)
でChronoField.MILLI_OF_SECOND
:
localTime.getLong(ChronoField.MILLI_OF_SECOND) // returns 190
値だけでなく、ミリ秒の合計数を取得milliseconds
するにはChronoField.MILLI_OF_DAY
、引数として使用します。
localTime.getLong(ChronoField.MILLI_OF_DAY) // returns 1630190
ただし、入力の名前はlapTime
であるため、LocalTime
クラスはジョブに適したツールではありません。たとえば、分が60以上の場合、コードは失敗します。
適切なツールはDuration
クラスです。
Duration duration = Duration.ofMinutes(minutes).plusSeconds(seconds).plusMillis(milliseconds);
または:
Duration duration = Duration.ofSeconds(seconds, milliseconds * 1000000).plusMinutes(minutes);
次に、以下を呼び出してミリ秒を直接取得できますtoMillis()
。
duration.toMillis(); // returns 1630190
これはラップタイムが1時間を超えても機能します。
String lapTime = "127:10.190";
. . .
duration.toMillis(); // returns 7630190
Java 9以降では、ミリ秒の部分を次のように呼び出すことで簡単に戻すことができますtoMillisPart()
。
duration.toMillisPart(); // returns 190
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加