使用java、js和sql计算两个日期的时间差

Java计算两个日期的时间差

以下为例子

Date stime = mt.getStartTime();
Date etime = mt.getEndTime();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Double time = (double) (etime.getTime()/1000 - stime.getTime()/1000);//以秒为单位
Double hours =  time /(60 * 60);//以小时为单位
DecimalFormat df = new DecimalFormat("######0.00");//保留两位小数
Double formatTime = Double.valueOf(df.format(hours));
mt.setWorkHour(formatTime);

计算过程中先后使用了两种方法
这两种方法精度相差很大
第一种方法在相除之后强转数据类型损失的精度很大
第二种方法在第一次强转之后显示三位小数 以科学计数法来显示

Long time =  (etime.getTime() - stime.getTime());
Double hours = (double) (time /(1000 * 60 * 60));

Double time = (double) (etime.getTime()/1000 - stime.getTime()/1000);
Double hours =  time /( 60 * 60);

JS计算两个日期的时间差

以为下例子

var usedTime = etime - stime;
var days=Math.floor(usedTime/(24*3600*1000));
//计算出小时数
var leave1=usedTime%(24*3600*1000); //计算天数后剩余的毫秒数
var hours=Math.floor(leave1/(3600*1000));//计算相差分钟数
var leave2=leave1%(3600*1000);        //计算小时数后剩余的毫秒数
var minutes=Math.floor(leave2/(60*1000));
var workHour = days + "天"+hours+"时"+minutes+"分";
return workHour;

js中取得数据之后想要保留两位小数

var time = record.get('takeTime');
time = time.toFixed(2);//为四舍五入的情况

ORACLE中使用SQL计算两个日期的时间差

以下为例子

SELECT
    (UPDATE_TIME - CREATE_TIME)*24
FROM
    MES_MACHINE MACH
WHERE
    UPDATE_TIME IS NOT NULL

如需保留两位小数 则使用round函数 ROUND(DATA,保留位数

SELECT
    ROUND((UPDATE_TIME - CREATE_TIME)*24,2)
FROM
    MES_MACHINE MACH
WHERE
    UPDATE_TIME IS NOT NULL

计算时间差以天、小时、分钟、秒为单位的情况
1. oracle 两个时间相减默认的是天数
2. oracle 两个时间相减默认的是天数*24 为相差的小时数
3. oracle 两个时间相减默认的是天数*24*60 为相差的分钟数
4. oracle 两个时间相减默认的是天数*24*60*60 为相差的秒数

猜你喜欢

转载自blog.csdn.net/sinat_29774479/article/details/78234245
今日推荐