当我使用此代码计时时,为什么我会额外增加7小时?

时间:2016-03-18 04:45:52

标签: java eclipse

我尝试了以下代码,但仍然得到了相同的结果:

代码1

    long start=System.currentTimeMillis();

    try {
        Thread.sleep(3000);
    } catch (InterruptedException e1) {
        e1.printStackTrace();
    }

    long finish=System.currentTimeMillis();

    Date date1 = new Date(finish- start);
    DateFormat formatter = new SimpleDateFormat("HH:mm:ss:SSS");
    String dateFormatted = formatter.format(date1);
    System.out.println(dateFormatted);

代码2

 Calendar calendar = Calendar.getInstance();
    calendar.setTimeInMillis(appTerminateTime - appStartTime);
    return "session lasted for " + calendar.get(Calendar.HOUR) + ":" + calendar.get(Calendar.MINUTE) + ":" + calendar.get(Calendar.SECOND);

1 个答案:

答案 0 :(得分:1)

额外时间的原因是由于创建Date时您的时区与JVM的默认GMT之间存在差异。

目前尚不清楚您要测量的会话长度,但您可能会考虑System.nanoTime()以获得更精确的测量长度,因为使用System.currentTimeMillis()可能会引入错误,因为它会对进行更正挂号时间,见this答案。