【问题标题】:Format error of time difference时差格式错误
【发布时间】:2014-06-25 20:42:47
【问题描述】:

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

在非工作线程中完成:

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 小时? 而且我按下开始和停止按钮的速度快于一小时。

【问题讨论】:

  • 您是否尝试设置时区?例如calendar.setTimeZone(TimeZone.getTimeZone("GMT")); ?

标签: android calendar date-formatting


【解决方案1】:

你得到的结果是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】:

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

    long startTime = System.currentTimeMillis();
    
    //* do something
    
    long endTime = System.currentTimeMillis();
    
    long elapsedTimeInMilliSecs=(endTime - startTime);
    
    Calendar ...
    

    我用这样的东西,效果很好。

    【讨论】:

      【解决方案3】:

      如果您只想在 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);  
      }  
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-12-07
        • 1970-01-01
        • 2022-08-18
        • 2014-06-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多