吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1906|回复: 8
收起左侧

[讨论] 分享JS计算两个时间差的代码

[复制链接]
cqwcns 发表于 2019-10-4 11:36
整理了个代码,用于计算两个时间之间的耗时,功能完全实现了,但感觉写得很累赘,不知道有没有更优的写法。欢迎大家砸砖。


[JavaScript] 纯文本查看 复制代码
		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);

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
银河魔装机神 + 1 + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

kbzxzzm 发表于 2019-10-4 11:48
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;
    }
 楼主| cqwcns 发表于 2019-10-4 12:18
kbzxzzm 发表于 2019-10-4 11:48
function dateFormat(timestamp) {
      var time = new Date(parseInt(timestamp));
      var y = tim ...

不一样吧你这个是返回格式化时间,1楼的代码是计算时间差。
xiaohui888 发表于 2019-10-4 12:52
两个时间变成时间截,然后时间截计算回时间更加方便吧!!不懂JS,易语言可以用时间截计算。
银河魔装机神 发表于 2019-10-4 15:58
学到了。
fire_flag 发表于 2019-10-4 16:15
本帖最后由 fire_flag 于 2019-10-4 16:17 编辑

[JavaScript] 纯文本查看 复制代码
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 03:32
本帖最后由 无瑕黑心肠 于 2019-10-5 21:49 编辑

[JavaScript] 纯文本查看 复制代码
/**
 * 计算时间差异
 * 注意:本函数不会检查时间的正确性,请保证新的时间大于旧的时间并且两个都是有效时间
 * @param  Object Date oldtime 旧的时间
 * @param  Object 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);
 楼主| cqwcns 发表于 2019-10-5 14:34
无瑕黑心肠 发表于 2019-10-5 03:32
[mw_shl_code=javascript,true]/**
* 计算时间差异
* 注意:本函数不会检查时间的正确性,请保证新的时 ...

这。。。难道是我不会用?
22.png
无瑕黑心肠 发表于 2019-10-5 21:54
cqwcns 发表于 2019-10-5 14:34
这。。。难道是我不会用?

感谢发现bug。这个是我以前用来计算两日时分秒差异的函数,没想到加个天数没做好处理,大意了
不过值得庆幸的是,现在这个问题已经修复了!
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-27 00:29

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表