Java / Android - 计算时间戳之间的差异

Java / Android - Calculate difference between timestamps

我在弄清楚如何计算两个时间戳(小时、分钟、秒)之间经过的时间时遇到了问题。这是结果:

String starttime = beginElement.getTimestamp();
String endtime = element.getTimestamp();

I/Start 时间:1496258892612

I/End 时间:1496258928999

long diffTime = Long.parseLong(endtime) - Long.parseLong(starttime);

I/Diff 时间:36387

String elapsedtime = new SimpleDateFormat("hh:mm:ss").format(Long.parseLong(String.valueOf(diffTime)));

I/Elapsed 时间:01:00:36

实际上,经过的时间只有36秒。总是比结果少一小时

如何解决这个奇怪的问题?

您使用的 API 不正确,解析不是您需要的,因为该时间与日期无关,而是与持续时间相关....

做类似的事情:

String periodAsHH_MM_SS = String.format("%02d:%02d:%02d", 
        TimeUnit.MILLISECONDS.toHours(diffTime),
        TimeUnit.MILLISECONDS.toMinutes(diffTime) % TimeUnit.HOURS.toMinutes(1),
        TimeUnit.MILLISECONDS.toSeconds(diffTime) % TimeUnit.MINUTES.toSeconds(1));

System.out.println("Duration in hh:mm:ss is: "+periodAsHH_MM_SS);

您需要设置 GMT 时区,试试这个:

    SimpleDateFormat sd = new SimpleDateFormat("HH:mm:ss");
    sd.setTimeZone(TimeZone.getTimeZone("GMT"));
    String elapsedtime = sd.format(diff);