/**
* 计算拜访时长
* @param beginTime
* @param endTime
* @return
*/
private String countTime(Long beginTime,Long endTime){
Long hours=endTime-beginTime;
Date dateTime=new Date(hours);
SimpleDateFormat sdf=new SimpleDateFormat("HH:mm:ss");
String time=sdf.format(dateTime);
return time;
}
一开始计算出来的时长是08:06:40;原因是Date和SimpleDateFormat获得的时间戳不考虑时区,而是获取标准的GMT时间戳;北京是东八区 相差的毫秒数是28800000。而本地时区与GMT格林威治标准时间的偏移量,可以通过TimeZone.getDefault().getRawOffset()方法得到。所以把毫秒数再减去这个方法得到的值即可。把代码改成:
/**
* 计算拜访时长
* @param beginTime
* @param endTime
* @return
*/
private String countTime(Long beginTime,Long endTime){
Long hours=endTime-beginTime-TimeZone.getDefault().getRawOffset();
Date dateTime=new Date(hours);
SimpleDateFormat sdf=new SimpleDateFormat("HH:mm:ss");
String time=sdf.format(dateTime);
return time;
}