我在确定如何计算两个时间戳(小时,分钟,秒)之间的经过时间时遇到问题。这是结果:
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秒。它总是比结果少一个小时。
如何解决这个奇怪的问题?
答案 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);