分享JS计算两个时间差的代码
整理了个代码,用于计算两个时间之间的耗时,功能完全实现了,但感觉写得很累赘,不知道有没有更优的写法。欢迎大家砸砖。var TimeStart = new Date("2019/10/4 11:50:23"); //开始时间
var TimeEnd = new Date("2019/10/6 12:52:28"); //结束时间
let date3 = TimeEnd.getTime() - TimeStart.getTime(); //时间差的毫秒数
let days = Math.floor(date3 / (24 * 3600 * 1000)); //计算出小时数
let leave1 = date3 % (24 * 3600 * 1000); //计算天数后剩余的毫秒数
let hours = Math.floor(leave1 / (3600 * 1000)); //计算相差分钟数
let leave2 = leave1 % (3600 * 1000); //计算小时数后剩余的毫秒数
let minutes = Math.floor(leave2 / (60 * 1000)); //计算相差秒数
let leave3 = leave2 % (60 * 1000); //计算分钟数后剩余的毫秒数
let seconds = Math.round(leave3 / 1000);
var vHaoShi = "";
if (days != 0) { //加IF语句组装,避免出现0天0时这种无意义的输出
vHaoShi += days + "天 ";
};
if (hours != 0) {
vHaoShi += hours + "小时 ";
};
if (minutes != 0) {
vHaoShi += minutes + " 分钟";
};
vHaoShi += seconds + " 秒";
console.log(vHaoShi); function dateFormat(timestamp) {
var time = new Date(parseInt(timestamp));
var y = time.getFullYear();
var m = time.getMonth() + 1;
m = m > 9 ? m : '0' + m;
var d = time.getDate();
d = d > 9 ? d : '0' + d;
var h = time.getHours();
h = h > 9 ? h : '0' + h;
var mm = time.getMinutes();
mm = mm > 9 ? mm : '0' + mm;
var s = time.getSeconds();
s = s > 9 ? s : '0' + s;
return y + '-' + m + '-' + d + ' ' + h + ':' + mm + ':' + s;
} kbzxzzm 发表于 2019-10-4 11:48
function dateFormat(timestamp) {
var time = new Date(parseInt(timestamp));
var y = tim ...
不一样吧{:1_924:}你这个是返回格式化时间,1楼的代码是计算时间差。 两个时间变成时间截,然后时间截计算回时间更加方便吧!!不懂JS,易语言可以用时间截计算。 学到了。 本帖最后由 fire_flag 于 2019-10-4 16:17 编辑
var date = new Date(时间戳); //获取一个时间对象
/**
1. 下面是获取时间日期的方法,需要什么样的格式自己拼接起来就好了
2. 更多好用的方法可以在这查到 -> http://www.w3school.com.cn/jsref/jsref_obj_date.asp
*/
date.getYear();// 获取年份
date.getMonth();// 获取月份(0-11,0代表1月,用的时候记得加上1)
date.getDate();// 获取日(1-31)
date.getTime();// 获取时间(从1970.1.1开始的毫秒数)
date.getHours();// 获取小时数(0-23)
date.getMinutes();// 获取分钟数(0-59)
date.getSeconds();// 获取秒数(0-59)
行不? 本帖最后由 无瑕黑心肠 于 2019-10-5 21:49 编辑
/**
* 计算时间差异
* 注意:本函数不会检查时间的正确性,请保证新的时间大于旧的时间并且两个都是有效时间
* @paramObject Date oldtime 旧的时间
* @paramObject Date newtime 新的时间
* @return String 返回时间差异文本,只计算(天、小时、分钟、秒)
*/
function calcTimeDiff(oldtime, newtime) {
let timeDiffNum = newtime - oldtime;
let timeDiff = new Date(timeDiffNum + 314208e5);
let dayDiff = Math.floor(timeDiffNum / 864e5);
let hourDiff = timeDiff.getHours();
let minuteDiff = timeDiff.getMinutes();
let secondDiff = timeDiff.getSeconds();
let timeStr = (dayDiff == 0 ? "" : dayDiff + "天");
timeStr += (hourDiff == 0 ? "" : hourDiff + "小时");
timeStr += (minuteDiff == 0 ? "" : minuteDiff + "分钟");
timeStr += (secondDiff == 0 ? "" : secondDiff + "秒");
return timeStr;
}
let timeStart = new Date("2019/10/4 4:50:23");
let timeEnd = new Date("2019/10/5 0:52:28");
let timeDiff = calcTimeDiff(timeStart, timeEnd);
console.log(timeDiff); 无瑕黑心肠 发表于 2019-10-5 03:32
/**
* 计算时间差异
* 注意:本函数不会检查时间的正确性,请保证新的时 ...
这。。。难道是我不会用?{:301_1009:}
cqwcns 发表于 2019-10-5 14:34
这。。。难道是我不会用?
感谢发现bug。这个是我以前用来计算两日时分秒差异的函数,没想到加个天数没做好处理,大意了{:1_896:}
不过值得庆幸的是,现在这个问题已经修复了!
页:
[1]