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

时间:2017-06-03 08:14:34

标签: java android timestamp long-integer elapsedtime

我在确定如何计算两个时间戳(小时,分钟,秒)之间的经过时间时遇到问题。这是结果:

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

I /开始时间:1496258892612

I /结束时间: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 time:01:00:36

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

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

2 个答案:

答案 0 :(得分:2)

您使用的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);

答案 1 :(得分:0)

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

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