JS时间差 ( 建议收藏 )

用Promise封装的时间差

传入格式2021-01-27 04:56:38

如果是2021/01/27 04:56:38

直接调用或从新赋值
let dateBegin = new Date(d1.replace(/-/g, "/"));

代码

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<meta name="viewport" content="width=device-width, initial-scale=1">
		<title>time</title>
		<style type="text/css">
			#div{
			 position: fixed;
			 top: 20px;
			 left: 50%;
			 transform: translate(-50%,0);
			 border: 1px solid red;
			 height: 300px;
			  300px;
			}
			#div div{
				margin: 10px;
				color: darkblue;
			}
		</style>
	</head>
	<body>
		<div id="div"></div>
		<script type="text/javascript">
			let div = document.getElementById("div");
			let date = new Date();
				function timeFn(d1) {//di作为一个变量传进来
				 return new Promise((reslove,reject)=>{
						//如果时间格式是正确的,那下面这一步转化时间格式就可以不用了
						let dateBegin = new Date(d1.replace(/-/g, "/"));//将-转化为/,使用new Date
						let dateEnd = new Date();//获取当前时间
						let dateDiff = dateEnd.getTime() - dateBegin.getTime();//时间差的毫秒数
						let dayDiff = Math.floor(dateDiff / (24 * 3600 * 1000));//计算出相差天数
						let leave1=dateDiff%(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)
						let res = {dayDiff,hours,minutes,seconds,leave1,dateDiff};
						reslove(res);
				 })
			}
			let t3="2021-01-27 04:56:38";
			let intervalTimeOut = 50;
			setInterval(()=>{
				timeFn(t3).then(res=>{
					div.innerHTML=`
						<div>相差: ${res.dayDiff}天, ${res.hours}小时, ${res.minutes}分钟, ${res.seconds}秒</div>
						<div>时间差的毫秒数: ${res.dateDiff}</div>
						<div>计算出相差天数: ${res.dayDiff}</div>
						<div>计算天数后剩余的毫秒数: ${res.leave1}</div>
						<div>计算出小时数: ${res.hours} h</div>
						<div>计算相差分钟数: ${res.minutes} m</div>
						<div>计算相差秒数: ${res.seconds} s</div>
					`
				});
			},intervalTimeOut)
		</script>
	</body>
</html>
原文地址:https://www.cnblogs.com/1748sb/p/14334636.html