13

私は自分のプロジェクトである種のストップウォッチを使用していますが、

start time ex: 18:40:10 h
stop time  ex: 19:05:15 h

次のような2つの値からの結果が必要ですfinal time = stop - start

いくつかの例を見つけましたが、どれも非常に紛らわしいものです。

簡単な解決策はありますか?

4

5 に答える 5

32

文字列がある場合は、java.text.SimpleDateFormat を使用してそれらを解析して java.util.Date にする必要があります。何かのようなもの:

        java.text.DateFormat df = new java.text.SimpleDateFormat("hh:mm:ss");
        java.util.Date date1 = df.parse("18:40:10");
        java.util.Date date2 = df.parse("19:05:15");
        long diff = date2.getTime() - date1.getTime();

ここで、diff は 18:40:10 から 19:05:15 までに経過したミリ秒数です。

編集1:

この方法をオンラインで見つけました ( http://www.javaworld.com/javaworld/jw-03-2001/jw-0330-time.html?page=2 ):

  int timeInSeconds = diff / 1000;
  int hours, minutes, seconds;
  hours = timeInSeconds / 3600;
  timeInSeconds = timeInSeconds - (hours * 3600);
  minutes = timeInSeconds / 60;
  timeInSeconds = timeInSeconds - (minutes * 60);
  seconds = timeInSeconds;

編集2:

文字列として使用したい場合 (これはずさんな方法ですが、機能します):

String diffTime = (hours<10 ? "0" + hours : hours) + ":" + (minutes < 10 ? "0" + minutes : minutes) + ":" + (seconds < 10 ? "0" + seconds : seconds) + " h";

編集3:

ミリ秒が必要な場合は、これを行うだけです

long timeMS = diff % 1000;

それを 1000 で割ると、秒の小数部が得られます。

于 2010-08-18T17:20:39.927 に答える
13

java.util.Dateを使用していると仮定します。

long totalTime = endDate.getTime() - startDate.getTime();

結果はミリ秒単位の合計時間になります。

于 2010-08-18T17:12:47.227 に答える