您的位置:首页 > 编程语言 > Java开发

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

2017-10-14 14:46 866 查看

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 为相差的秒数
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息