0

发现此站点上的代码并且此代码适用于我的情况,但是有没有办法可以直接获取经过的时间“持续时间”并使用 SimpleDateFormat(“HH:mm:ss”)对其进行格式化?更具体地说..我想要这样的东西,而不需要从 1970 年获得 HH:mm:ss :),例如:“00:00:10”

SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss"); 持续时间=结束时间-开始时间;durationStr=sdf.format(duration);

      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

你可以试试这个:

注意:在这个例子中我没有使用任何服务,所以我使用了一个postDelayed在 5 秒后执行代码的服务。基于此,我正在计算从活动开始到活动结束的持续时间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 回答