时差的格式错误

时间:2014-06-25 20:42:48

标签: android calendar date-formatting

我想计算用户按下开始和停止时的时间差异。 这是我到目前为止所得到的:

完成非工作线程:

runTime = System.currentTimeMillis();

完成主线程:

DateFormat formatter = new SimpleDateFormat("hh:mm:ss.SSS");
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis() - runTime);
timeTextView.setText("Time: " + formatter.format(calendar.getTime()));

结果总是" 01:00:00.000"。 为什么我要加1小时呢? 并且我按下开始和停止按钮的速度要快一小时。

3 个答案:

答案 0 :(得分:0)

一个简单的解决方法(解决?)这个问题:

long startTime = System.currentTimeMillis();

//* do something

long endTime = System.currentTimeMillis();

long elapsedTimeInMilliSecs=(endTime - startTime);

Calendar ...

我使用类似的东西,它工作正常。

答案 1 :(得分:0)

你得到的结果是java中epoch以来的时间,所以如果你试图打印

timeTextView.setText("Time: " + calendar.getTime().toString());

您更有可能获得Wed Dec 31 19:00:00 EST 1969的结果取决于您目前所在的TimeZone。从上面的代码我得到07:00:00:000,因为我在EST TimeZone。你不能真正做到这一点,但它消除了hh所以它只会显示分钟,秒和毫秒。

答案 2 :(得分:0)

如果您只想在HH:MM:SS中消耗经过的时间,请尝试此操作,即使您的时间超过24小时也能正常工作。

timeTextView.setText("Time: " + convertMillis(System.currentTimeMillis() - runTime));
...
public static String convertMillis(long milliseconds){  
    long time = milliseconds / 1000;  
    String seconds = Integer.toString((int)(time % 60));  
    String minutes = Integer.toString((int)((time % 3600) / 60));  
    String hours = Integer.toString((int)(time / 3600));  
    for (int i = 0; i < 2; i++) {  
        if (seconds.length() < 2) {  
            seconds = "0" + seconds;  
        }  
        if (minutes.length() < 2) {  
            minutes = "0" + minutes;  
        }  
        if (hours.length() < 2) {  
            hours = "0" + hours;  
         }  
    }  
    return(hours + ":" + minutes + ":" + seconds);  
}