Math函数和Date函数与计时器

Math数学函数

Math对象直接调用相应的属性和方法。
1、对象属性,共有八个,常用的是Math.PI

console.log(Math.PI);
//3.141592653589793

2、对象方法
(1)三角函数(正弦 余弦等)

// 方法的参数是弧度
// 1度是 Math.PI/180
console.log(Math.sin(Math.PI/2));

(2)取整

// Math.round(x) 四舍五入
// Math.ceil(x)  向上取整,取比它大的最小整数
// Math.floor(x)  向下取整,取比它小的最大整数
			
console.log(Math.ceil(1.1),Math.ceil(-1.1));
// 2 -1
console.log(Math.floor(1.9),Math.floor(-1.9));
// 1 -2

(3)绝对值

// Math.abs(x) 
console.log(Math.abs(-1.2));
// 1.2

(4)最大最小值

// max min 取一组数中的最大值最小值
console.log(Math.max(23,887,1,2));    //887
console.log(Math.min(23,887,1,2));    //1

(5)x 的 y 次幂。

// Math.pow(x,y)
console.log(Math.pow(2,5));    //32

(6)x的平方根

// Math.sqrt(x)
console.log(Math.sqrt(2));

(7)随机数

// Math.random() 生成[0,1)之间的随机数
// [0,n]
var randNum = Math.floor(Math.random()*(n+1));
// [m,n]
var randNum1 = Math.floor(Math.random()*(n-m+1))+m;
// [65,97]
var randNum2 = Math.floor(Math.random()*33)+65;

Date日期函数

1、创建日期对象

// 1 获取当前日期
var oDate = new Date();
console.log(oDate);         //Wed Aug 21 2019 16:17:01 GMT+0800 (中国标准时间)
console.log(typeof oDate);  //object
			
// 2 指定日期
var oDate1 = new Date("2019-10-01 12:00:00");
oDate1 = new Date("2019/01/01 12:00:00");
oDate1 = new Date(2019,10,1);    //2019年11月1号,月份从0-11
oDate1 = new Date(1000);         //Thu Jan 01 1970 08:00:01 GMT+0800 (中国标准时间)		
console.log(oDate1);

2、日期对象的get方法
首先需创建一个日期对象

var oDate = new Date();

(1)oDate.getFullYear() 年份,返回值为四位数
(2)oDate.getMonth() 月份(0-11,0代表一月,11代表十二月)
(3)oDate.getDate() 天数,返回一个月中的某一天
(4)oDate.getDay() 返回一周中的某一天(0-6,0代表星期天)
(5)oDate.getHours() 小时(0-23)
(6)oDate.getMinutes() 分钟(0-59)
(7)oDate.getSeconds() 秒(0-59)
(8)oDate.getMilliseconds() 返回当前毫秒(0-999)
(9)oDate.getTime() 返回1970年1月1日至今的毫秒数

console.log(oDate.getFullYear(),oDate.getMonth(),oDate.getDate(),oDate.getDay());
// 2019 7 21 3
// 月份0-11 0表示一月
// 星期0-6 0表示周日
			
console.log(oDate.getHours(),oDate.getMinutes(),oDate.getSeconds());
// 时 分 秒

3、日期对象的set方法

var oDate = new Date();
// set方法与get方法相对应,以下列举一部分
// 改变日期中的某些值
oDate.setFullYear("2018");
console.log(oDate);
oDate.setMonth("9");
console.log(oDate);
// 设置的是9 显示的是Oct十月
			
// 设置一个十天以后的日期
oDate.setDate(oDate.getDate()+10);
console.log(oDate);
			
console.time("aa");
for(var i=0;i<100;i++){
				
}
console.timeEnd("aa");
// aa: 0.01904296875ms
// 输出之间的代码执行时间,名字需一致

案例

判断两个日期相差的天数 时 分 秒

function getDiffDays(date1,date2){
	var ms = Math.abs(date2-date1);
	var ss = ms/1000;
	var day = Math.floor(ss/(24*60*60));
	var hour = Math.floor(ss/(60*60)) % 24;
	var minute = Math.floor(ss/60) % 60;
	var second = Math.floor(ss % 60);
	return "相差"+day+"天"+hour+"时"+minute+"分"+second+"秒";
}
var oDate1 = new Date("2019-08-23 12:00:00");
var oDate2 = new Date();
console.log(getDiffDays(oDate1,oDate2));

定时器

注:定时器是异步执行的,页面的定时器需等其他都执行完之后才执行。当代码走到定时器代码处,先把定时器按顺序放在一边,页面所有代码执行完毕之后,再按顺序执行定时器。
1、设置定时器 setInterval(fn,time)

//每隔一个time时间(毫秒),去执行一下fn函数
<div id="box"></div>
<script type="text/javascript">
	setInterval(function(){
		var oDate = new Date();
		box.innerText = oDate;
	},1000);
</script>

2、清除定时器 clearInterval(timer)

// 清除名为timer的定时器
<div id="box"></div>
<script type="text/javascript">
	var count=5;
	box.innerText = count;
	var timer = setInterval(function(){
		count--;
		box.innerText = count;
		if(count==0){
			box.innerText = "计时器结束";
			clearInterval(timer);
		}
	},1000);	
</script>

3、设置延时器
setTimeout(fn,time); 隔time时间,执行一次fn,fn只执行一次
clearTimeout(timer); 清除延时器

var timer = setTimeout(function(){
	console.log("aa");
},3000);
clearTimeout(timer);

案例

京东秒杀

<div id="tip"></div>
<div id="box"></div>
<script type="text/javascript">
	var oDate1 = new Date("2019-8-22 12:00:00");
	// 设置结束时间
	var hour = oDate1.getHours();
	var minute = oDate1.getMinutes();
	var second = oDate1.getSeconds();
	hour = hour<10 ? "0"+hour : hour;
	minute = minute<10 ? "0"+minute : minute;
	second = second<10 ? "0"+second : second;
	// 将结束时间提取出来,放到提示信息框内
	tip.innerText = "距离"+hour+":"+minute+":"+second+" 还有:";
			
	timeDiff(oDate1);
	var timer = setInterval(function(){
		timeDiff(oDate1);
	},1000);
			
	function timeDiff(oDate1){
		var oDateCurrent = new Date();
		var ss = Math.floor( (oDate1-oDateCurrent)/1000 );
		if(ss <= 0){
			box.innerText = "秒杀结束";
			clearInterval(timer);
		}else{
			var hour = Math.floor(ss/60/60);
			// 小时相差可能超过24小时,故无需再对24取余
			var minute = Math.floor(ss/60) % 60;
			var second = Math.floor(ss%60);
			hour = hour<10 ? "0"+hour : hour;
			minute = minute<10 ? "0"+minute : minute;
			second = second<10 ? "0"+second : second;
			box.innerText = hour+":"+minute+":"+second;
		}
	}	
</script>
可以使用`setInterval`函数来实现倒计时动画,具体实现方法如下: 首先,需要设置一个初始时间和一个倒计时结束时间。然后,使用`setInterval`函数循环执行一个函数,该函数将会在每个一定的时间间隔内被调用。 在该函数内部,可以获得当前时间,并计算出还有多少时间剩余。然后,根据剩余时间来更新倒计时的显示,并在时间到达结束时间时停止计时器。 以下是一个简单的示例代码: ```javascript // 设置初始时间和结束时间 const startTime = new Date().getTime(); const endTime = startTime + 100000; // 获取页面中的倒计时元素 const countdown = document.querySelector('.countdown'); // 定义倒计时函数 function updateCountdown() { const currentTime = new Date().getTime(); const remainingTime = endTime - currentTime; // 计算剩余时间的分钟和秒数 const minutes = Math.floor(remainingTime / (1000 * 60)); const seconds = Math.floor((remainingTime % (1000 * 60)) / 1000); // 更新倒计时的显示 countdown.innerHTML = `${minutes}:${seconds.toString().padStart(2, '0')}`; // 如果时间到达结束时间,停止计时器 if (remainingTime <= 0) { clearInterval(countdownInterval); countdown.innerHTML = 'Time Up!'; } } // 使用setInterval函数调用倒计时函数 const countdownInterval = setInterval(updateCountdown, 1000); ``` 在该示例代码中,我们首先获取了页面中的倒计时元素,并设置了初始时间和结束时间。然后,我们定义了一个`updateCountdown`函数,在函数内部计算剩余时间并更新倒计时的显示。最后,我们使用`setInterval`函数来循环调用该函数,直到时间到达结束时间时停止计时器
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值