0

このコードを使用して開始時間を取得します。

SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss.SSS");
            String start_time = sdf.format(cal.getTime());

そして、次のコードを使用して終了時間を取得します。

SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss.SSS");
            String end_time = sdf.format(cal.getTime());

経過時間を取得したいので、みたいなのstart_time - endtime = elapsed_timeがいいのですが、できそうにありません。私はまだオブジェクトを理解するのが得意ではありませんが、文字列はオブジェクトであるため、経過時間を簡単に取得することはできません。これを行う簡単な方法は何でしょうがelapsed_time、文字列として持つにはどうすればよいでしょうか?

4

4 に答える 4

2

あなたが持っていると仮定した場合:

  • calBegin = 開始時刻に設定されたカレンダー
  • calEnd = 終了時刻に設定されたカレンダー

次に、次のようなものを使用できます。

long elapsedMs = calEnd.getTime().getTime() - calBegin.getTime().getTime();

経過時間 = 開始から終了までの経過時間 (ミリ秒)

于 2012-11-13T11:30:02.120 に答える
2
 Date elapsed= new Date(sdf.parse(end_time).getTime() - sdf.parse(start_time).getTime());
        System.out.println(sdf.format(elapsed));
  1. start と time を long 型に変換します。
  2. 引き算をします。
  3. 得られた結果を java.util.Date オブジェクトに変換する
  4. SimpledateFormat を使用して特定の形式で結果を取得する形式
于 2012-11-13T11:31:55.827 に答える
2

この場合、おそらく最善の選択は Joda Time です: http://joda-time.sourceforge.net/ Interval クラスと Duration クラスがあり、どちらも時差の測定に使用できます。Interval には ReadableDuration があり、それをフォーマットする toString メソッドがあります。

Joda Time のドキュメントから:

// interval from start to end
DateTime start = new DateTime(2004, 12, 25, 0, 0, 0, 0);
DateTime end = new DateTime(2005, 1, 1, 0, 0, 0, 0);
Interval interval = new Interval(start, end);
于 2012-11-13T11:25:57.857 に答える
2

これstringでは不可能です。オブジェクトを使用する必要がありDateます:

calの場合Calendar:

Date start_date = cal.getTime();
//change to calendar to other date
Date end_date = cal.getTime();
long total_time = end_date.getTime() - start_date.getTime();

calを返すカスタム オブジェクトのようなものである場合String:

SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss.SSS");
Date start_date = sdf.parse(cal.getTime(), 0);
Date end_date = sdf.parse(cal.getTime(), 0);

long total_time = end_date.getTime() - start_date.getTime();

total_time はミリ秒単位の合計時間です

于 2012-11-13T11:33:13.293 に答える