吾愛破解 - LCG - LSG |安卓破解|病毒分析|破解軟件|www.aejguz.icu

 找回密碼
 注冊[Register]

QQ登錄

只需一步,快速開始

搜索
查看: 367|回復: 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 [email protected]

查看全部評分

發帖前要善用論壇搜索功能,那里可能會有你要找的答案或者已經有人發布過相同內容了,請勿重復發帖。

沙發
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;
    }
3#
 樓主| 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樓的代碼是計算時間差。
4#
xiaohui888 發表于 2019-10-4 12:52
兩個時間變成時間截,然后時間截計算回時間更加方便吧!!不懂JS,易語言可以用時間截計算。
5#
銀河魔裝機神 發表于 2019-10-4 15:58
學到了。
6#
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)


行不?
7#
無瑕黑心腸 發表于 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);
8#
 樓主| cqwcns 發表于 2019-10-5 14:34 <
無瑕黑心腸 發表于 2019-10-5 03:32
[mw_shl_code=javascript,true]/**
* 計算時間差異
* 注意:本函數不會檢查時間的正確性,請保證新的時 ...

這。。。難道是我不會用?
9#
無瑕黑心腸 發表于 2019-10-5 21:54
cqwcns 發表于 2019-10-5 14:34
這。。。難道是我不會用?

感謝發現bug。這個是我以前用來計算兩日時分秒差異的函數,沒想到加個天數沒做好處理,大意了
不過值得慶幸的是,現在這個問題已經修復了!
您需要登錄后才可以回帖 登錄 | 注冊[Register]

本版積分規則 警告:禁止回復非技術或與主題無關水貼,違者重罰!

快速回復 收藏帖子 返回列表 搜索

RSS訂閱|小黑屋|聯系我們|吾愛破解 - LCG - LSG ( 京ICP備16042023號 | 京公網安備 11010502030087號 )

GMT+8, 2019-10-18 03:32

Powered by Discuz!

© 2001-2017 Comsenz Inc.

快速回復 返回頂部 返回列表
宝盈娱乐平台