使用long类型时间计算 时间会有较大误差, 使用float类型 会缩小误差
float计算时间差 方法
/** * 计算时间差,若是endTime为空则默认当前时间 * @param startTime * @param endTime * @param level * @return */
public static float dateDiff(Date startTime, Date endTime,String level) {
if(startTime==null){
log.info("dateDiff startTime不能为空");
}
if(StringUtils.isBlank(level)){
level="h";
}
if(endTime==null){
endTime=new Date();
}
// 得到两个时间的毫秒时间差别
float diff = new Long(endTime.getTime() - startTime.getTime()).floatValue();
float result=0;
if (level.equalsIgnoreCase("d")) {
result = diff / (1000 * 24 * 60 * 60);// 计算差多少天
log.info("dateDiff day:"+result+",start:"+startTime.toString()+" end:"+endTime.toString());
return result;
} else if (level.equalsIgnoreCase("h")){
result = diff / (1000 * 60 * 60);// 计算差多少小时
log.info("dateDiff hour:"+result+",start:"+startTime.toString()+" end:"+endTime.toString());
return result;
}else if (level.equalsIgnoreCase("m")){
result = diff / (1000 * 60);// 计算差多少分钟
log.info("dateDiff min:"+result+",start:"+startTime.toString()+" end:"+endTime.toString());
return result;
}else if (level.equalsIgnoreCase("s")){
result = diff / 1000;// 计算差多少秒
log.info("dateDiff sec:"+result+",start:"+startTime.toString()+" end:"+endTime.toString());
return result;
}else{
return result;
}
}
方法原文链接:http://www.javashuo.com/article/p-hegcleho-ke.html