0

このサイトでそのコードが見つかり、このコードは私のケースで機能しますが、経過時間「期間」を直接取得して SimpleDateFormat("HH:mm:ss") でフォーマットする方法はありますか? より具体的には.. 1970 年から HH:mm:ss を取得せずに、このようなものが必要です :) 、例: "00:00:10"

SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss"); 期間 = endTime-startTime; durationStr=sdf.format(期間);

      public long startTime;
      public long endTime;
      String durationStr;
      public long durationSec;
      public long minutes,seconds,hours;

        @Override
            public void onCreate(){
            super.onCreate();
            //service started
            startTime = System.currentTimeMillis();
        }

                public getLastLocation(){
            //this is where the service ends
                endTime=System.currentTimeMillis();
                Date d = new Date(endTime);
                Date d1 = new Date(startTime);
                duration = d.getTime() - d1.getTime();
                durationSec = TimeUnit.MILLISECONDS.toSeconds(duration);
                seconds = durationSec % 60;
                durationSec/= 60;
                minutes = durationSec % 60;
                durationSec /= 60;
                hours = durationSec % 24;
                durationStr=String.valueOf(hours)+" "+String.valueOf(minutes)+" "+String.valueOf(seconds);
4

1 に答える 1

0

これを試すことができます:

注:この例ではサービスを使用していないため、postDelayed5 秒後にコードを実行する を使用しました。それに基づいて、アクティビティの開始から終了までの期間を計算していますpostDelayed

long delayedTime, currTime;
TextView text;
currTime = System.currentTimeMillis();
            new Handler().postDelayed(new Runnable() {

                    @Override
                    public void run() {
                        delayedTime = System.currentTimeMillis();
                        text.setText("" + getDurationString((int)((delayedTime - currTime) * 0.001)));
                    }
                }, 5000);

--

public String getDurationString(int seconds) {
    int hours = seconds / 3600;
    int minutes = (seconds % 3600) / 60;
    seconds = seconds % 60;
    return twoDigitString(hours) + " : " + twoDigitString(minutes) + " : " + twoDigitString(seconds);
                }

private String twoDigitString(int number) {
  if (number == 0) {
     return "00";
  }
  if (number / 10 == 0) {
     return "0" + number;
  }
  return String.valueOf(number);
}

[変換]

于 2014-04-03T06:27:55.147 に答える