Math和Date
一、Math
**概述:**js内置对象,处理数学问题
Math对象方法
-
abs(x) 返回数的绝对值
-
acos(x)返回数的反余弦值
-
asin(x)返回数的反正弦值
-
atan(x)以介于-π/2与π/2弧度之间的数值来返回x的反正切值
-
atan2(y,x) 返回从x轴到点(x,y)的角度(介于-π/2与π/2弧度之间)
-
ceil(x)对数进行向上取整
-
floor(x) 对数进行向取整
-
exp(x) 返回e的指数
-
cos(x) 返回数的余弦
-
log(x) 返回数的自然对数(底为e)
-
max(x,y) 返回x和y中的最大值
-
min(x,y) 返回x和y中的最小值
-
pow(x,y) 返回x的y次幂
-
random() 返回0~1之间的随机数,包括0,不包括1
-
round(x) 把数四舍五入取整
-
sin(x) 返回数的正弦
-
sqrt(x)返回数的平方根
-
tan(x) 返回角的正切
-
toSource() 返回该对象的源代码
-
valueOf() 返回Math对象的原始值
random
-
Math.random() 这个方法是用来生成一个0~1之间 的随机数
-
每次执行的数字都是不一样的,但是是0~1之间的
-
生成的数值包含0,但不包含1
var num = Math.random() document.write(num) //得到一个随机数
max和min
-
Math.max() 得到的是你传入的几个数字之中最大的那个数字
document.write(Math.max(1,2,3,4,5,6)) //5 document.write(Math.max(1,2,3,4,5,6)) //1
二、数字进制转换
进制:
- 0x表示十六进制,但是js会强制转换为十进制来运算,0xa==10
- 0开头表示八进制,同样强制转换为十进制来运算010==8
-
toString()
方法可以在数字转换成字符串的时候给出一个进制-
语法:
toString(你要转换的进制)
var num = 100 document.write(num.toString(2)) //1100100 document.write(num.toString(8)) //144 document.write(num.toString(16)) //64
-
-
parsInt()
方法可以在字符串转换成数字的时候把字符串当成多少进制转换成十进制
-
语法:
parseInt(要转换的字符串,当做几进制来转换)
var num = 100 document.write(parseInt(num,2)) //4 document.write(parseInt(num,8)) //256 document.write(parseInt(num,16)) //64 //其他进制转十进制
三、Date
概述:js提供 的内置构造函数,专门用来获取时间的
new Date()
在不传递参数的情况下是默认返回当前时间的
var time = new Date()
document.write(time) //Fri Jul 30 2021 10:57:00 GMT+0800 (中国标准时间)
new Date
在传入参数的时候,可以获取到你传递进去的时间
var time = new Date('2021-07-30 10:58:00')
document.write(time) //Fri Jul 30 2021 10:58:00 GMT+0800 (中国标准时间)
将日期字符串格式化成指定内容
-
getFullYear
方式是得到指定字符串中的哪一年var time = new Date('2021-07-30 10:58:00') document.write(time.getFullYear()) //2021
-
getMoth()
方法是得到指定字符串中的哪一个月份var time = new Date('2021-07-30 10:58:00') document.write(time.getMonth()) //6
- 这里有一个要注意的地方
- 月份是从0开始数的
- 0表示1月,1表示2月,依次类推
-
getDate()
方法是得到指定字符串的哪一天var time = new Date('2021-07-30 10:58:00') document.write(time.getDate) //30
-
getHours()
方法是得到指定字符串的哪个小时var time = new Date('2021-07-30 10:58:00') document.write(time.getHours) //10
-
getMinutes()
方法是得到指定字符串中的哪分钟var time = new Date('2021-07-30 10:58:00') document.write(time.getMinuts) //58
-
getSeconds()
方法是得到字符串中的哪秒var time = new Date('2021-07-30 10:58:00') document.write(time.getSeconds()) //22
-
getDay()
方法是得到指定字符串当前日期是一周中的第几天 (周日是0,周六是6)var time = new Date('2021-07-30 10:58:00') document.write(time.getDay()) //5
-
getTime()
方法是得到时间的格林威治时间 的毫秒数var time = new Date('2021-07-30 10:58:00') document.write(time.getTime()) //1627613880000
计算时间差
原理: 先获得两个时间点的格林威治时间 的毫秒数,两个时间相减,得到两个时间点之间相差的毫秒数,在把我们得到的毫秒数换算成时间
举个栗子
//计算 2019-01-01 00:00:00 到 2019-01-03 04:55:34 的时间差
var time1 = new Date('2019-01-01 00:00:00')
var time2 = new Date('2019-01-03 04:55:34')
//获取两个时间的格林威治时间
time1 = time1.getTime()
time2 = time2.getTime()
//得到两个时间格林威治时间的差
var differenceTime = time2 - time1
//计算整天数
var day = differenceTime / (1000*60*60*24)
day = Math.floor(day) //2
//因为得到的是有小数的天数,我们向下取整,得到整数的天数
- 使用
differenceTime
减去得到的天数所包含的毫秒数,剩下的就是不够一天的毫秒数 - 用不够一天的毫秒数计算出有多少个小时
- 一个小时的毫秒数是
1000*60*60
//计算整的小时数
var afterHours = differenceTime - (1000*60*60*24*day)
var hours = afterHours / (1000*60*60)
hours = Math.floor(hours) //4
//和刚才一样,我们需要向下取整
-
同理,使用
afterHours
减去得到的小时所包含的毫秒数,剩下的就是不到一个小时的毫秒数 -
用不到一个小时的毫秒数计算出有多少分钟
-
一分钟的毫秒数是
1000*60
//计算整分钟数 var afterMinutes = afterHours - (1000*60*60*hours) var minutes = afterMinutes / (1000*60) minutes = Math.floor(minutes) //55
-
和之前一样的道理计算出秒
//计算整秒数 var afterSeconds = afterMinuts - (1000*60*minutes) var seconds = afterSeconds / 1000 seconds = Math.floor(seconds) //34
-
同理,最后减去剩下的整的秒数,剩下的就是毫秒数
//计算毫秒数 var milliSeconds = afterSeconds - (1000*seconds) //0 //最后输出 document.write(day,'天',hours,'小时',minutes,'分',seconds,'秒',millSeonds,'毫秒')
定时器
概述: 定时器在很多地方都会用上,图片的轮播效果,在线时钟,弹窗广告,很大可能都是跟定时器有关的。
setTimeout()和clearTimeout()
在JavaScript中,我们可以使用setTimeout()
方法来设置“一次性”
调用的函数。其中clearTimeout()
可以用来取消执行setTimeout()
方法。
语法:
var 变量名 = window.setTimeout(code , time); window.
可以省略
参数code可以是一段代码,也可以是一个函数或者调用的函数名
参数time表示时间,表示要通过多长的时间才执行code中的内容,单位为毫秒
举个栗子
setTimeout("alert('对不起, 要你久候')", 3000 ) //,三秒后弹窗
setInterval()和clearInterval()
使用方法和setTimeout()
一样,setInterval()
方法可按照指定的周期(以毫秒计)来调用函数或计算表达式。
setInterval()
方法会不停地调用函数,直到 clearInterval()
被调用或窗口被关闭。
setInterval(function (){
document.write('hello')
},1000) //每隔1秒打印一次hello