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>