tl; dr
Duration d = Duration.ofMillis( … ) ;
int minutes = d.toMinutesPart() ;
int seconds = d.toSecondsPart() ;
Java9以降
Java 9以降では、を作成しDuration
てto…Part
メソッドを呼び出します。この場合:toMinutesPart
およびtoSecondsPart
。
ストップウォッチの開始と停止をキャプチャします。
Instant start = Instant.now();
…
Instant stop = Instant.now();
Duration
オブジェクトの経過時間を表します。
Duration d = Duration.between( start , stop );
各部分、分、秒について質問します。
int minutes = d.toMinutesPart();
int seconds = d.toSecondsPart();
また、ストップウォッチが予想どおりに長く動作したかどうかを確認することもできます。
Boolean ranTooLong = ( d.toDaysPart() > 0 ) || ( d.toHoursPart() > 0 ) ;
Java 8
Java 8では、Duration
クラスにto…Part
メソッドがありません。他の回答に示されているように、数学を行う必要があります。
long entireDurationAsSeconds = d.getSeconds();
またはDuration
数学をしましょう。
long minutesPart = d.toMinutes();
long secondsPart = d.minusMinutes( minutesPart ).getSeconds() ;
IdeOne.comのライブコードを参照してください。
間隔:2016-12-18T08:39:34.099Z / 2016-12-18T08:41:49.099Z
d.toString():PT2M15S
d.getSeconds():135
経過:2M 15S
解決
now
参考までに、メソッドの解像度はJava8とJava9の間で変更されました。この質問を参照してください。
- Java 9は、ナノ秒という細かい解像度で瞬間をキャプチャします。解像度は、コンピューターのハードウェアの機能によって異なります。macOSSierraを搭載したMacBookPro Retinaでマイクロ秒(小数点以下6桁)が表示されます。
- Java 8は、ミリ秒までの瞬間をキャプチャします。の実装は
Clock
、ミリ秒の解像度に制限されています。だからあなたはできる値をナノ秒単位で保存ますが、キャプチャするのはミリ秒単位のみです。
java.timeについて
java.timeフレームワークは、Java8以降に組み込まれています。これらのクラスは、、などの厄介な古いレガシー日時クラスに取って代わりますjava.util.Date
。Calendar
、& SimpleDateFormat
。
詳細については、Oracleチュートリアルを参照してください。。そして、StackOverflowで多くの例と説明を検索してください。仕様はJSR310です。
ジョダタイム今ではプロジェクト、メンテナンスモードへの移行をアドバイスjava.timeのクラス。
java.timeオブジェクトをデータベースと直接交換できます。に準拠したJDBCドライバーを使用するJDBC4.2以降に。文字列もjava.sql.*
クラスも必要ありません。
java.timeクラスはどこで入手できますか?