Math & Date
对象的分类
内部对象:(在任何Es实现中都可以使用)
1:本地对象:ECMAScript提供的需要实例化(new)才能使用的对象 Object Array String Function Data 等
自定义对象:由开发人员自己创建的对象
宿主对象:目前主要是指浏览器提供的对象比如BOM DOM是js独有的
内置对象
内置对象就是js语言自带的一些对象,这些对象供开发者使用,并提供了一些常用的或者最基本而必要的功能(属性和方法)
Math
-
Math对象是js的原生对象,提供各种数学功能,不是一个构造函数调用时不需要使用new生成对象实例,所有的属性和方法都必须在Math上调用
-
Math的静态属性提供一些数学常数,这些属性是只读的不能修改
Math.PI //Math对象的属性,圆周率 3.1415926....
-
Math提供了一些静态方法
-
最大最小值 (参数不能为数组 传数组为NaN)
Math.max(num1,num2) //返回若干个参数之际的较大的数
Math.min(num1,num2) //返回较小的数
Matn.max(1,2,"哈哈") //NaN
Math.max() //-Infinity
在js中不提供找出数组中最大元素的函数,结合apply方法和Math.max方法可以,就可以返回数组中最大元素
var arr=[1,2,3,33,24,56,3,4,6767,3323,36,-1]
console.log(Math.max.apply(null,arr))//null-->arr必须是一个数组
console.log(Math.min.apply(null,arr))
绝对值(数字到坐标原点的距离)
Math.abs(-1) //-1
Math.abs("77") //77
Math.abs('nihao') //NaN
向下取整 floor 地板 是往最小了取整数值
Math.floor(3.4) //3
Math.floor(3.9) //3
向上取整 ceil 天花板 是往最大了取整数值
Math.ceil(4.6)//5
Math.ceil(4.1)//5
Math.ceil(-10.5)//-10
四舍五入 不管符号,只看数值,进行四舍五入 特殊记忆: 负数 -?.5直接舍
Math.round(1.5) //2
Math.round(-1.5)//-1 ??**.5**特殊直接舍???
Math.round(10.499)//10 取整只看小数点后一位来四舍五入
返回0至1之间的随机数x(0=<x<1),这个方法不需要参数,,每次调用自动返回一个随机数
Math.random()
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Math/random
随机点名的案例 (bz)
Math.random() 返回 0~1之间的随机数 含小数
0~10之间的随机整数:
使用Math.random()获取0~0.9999之间的随机数 *10 后 0~9.9999
取整:Math.floor() 向下取整 0~9
Math.ceill() 向上取整 1~10 出现0的概率很小
Math.round() 四舍五入取整 0~10
0~0.49999 0
0.5~1.4999 1
1.5~2.4999 2
.
8.5~9.4999 9
9.5~9.9999 10
四舍五入取整,得到 0 和 10 的概率是1到9的一半 不考虑概率舍可以直接用的
0~20之间的随机整数:
使用Math.random()获取0~1之间的随机数 *20 取整
0~(m-n)之间的随机整数
使用Math.random()获取0~1之间的随机数 *(m-n+1) 取整
20~30
使用Math.random()获取0~1之间的随机数 *10+20
30~50
使用Math.random()获取0~1之间的随机数* (50-30)+30
。。。。
n~m
使用Math.random()获取0~1之间的随机数* (m-n)+n
//-------比较选取哪种取整方式
var obj={};
//console.log(Math.random());
for(var i=0;i<=1000;i++){
var res=Math.floor(Math.random()*(10+1)); //概率差不多
// var res=Math.ceil(Math.random()*10);
// var res=Math.round(Math.random()*10); //使用向下取整获取的数字两端少,中间多 两边概率小
if(obj[res]){
obj[res]++
}else{
obj[res]=1;
}
}
console.log(obj)
//封装范围内随机整数
/*
@param {NUMBER} n 数字1
@param {NUMBER} m 数字1
@return {NUMBER} 随机数字
*/
function rangeRandom(n,m){
var max=Math.max(n,m);
var min=Math.min(n,m);
return Math.floor(Math.random()*(max-min+1)+min);
}
var res=rangeRandom(20,80)
console.log(res)
数值.toFixed(指定小数位数的数字);
//将数值四舍五为指定小数位数的数字
数字转换进制
-
进制是一种数字的表示方法,进制有2~36进制
js里进制转换分为两种
-
十进制转换为其他进制
使用方法:数字.toString(你要转换的进制)
返回值:以字符串的形式返回给你转换好的进制数字,如果不以字符串的形式返回,那么在js里自动转换成十进制
var num=100; console.log(num.toString(2)); //1100100 console.log(num.toString(16)); //64
-
其他进制转换为十进制
方法:parseInt(要转换的数字,你把这个数字当做进制)
返回值:转换好以后的十进制数字
console.log(parseInt(101,8));// 65 将一个8进制的数字101转换为十进制后是65
注意计算的时候要是同一进制的数值再计算
-
Date
js有一个内置的构造函数Date,是js的时间库,用来处理时间和日期。
Date是一个构造函数,需要先用new调用生成对象
格式:var time=new Date() 返回值:当前终端的当前时间,当把你电脑的时间调整后,得到的是调整以后的时间
Date对象以国际标准时间1970年的1月1日00:00:00作为时间的零点,可以表示的时间是前后各一亿天(单位为毫秒)
可以创建一个指定日期的时间对象
var today=new Date();
-
如果不加参数,返回的实例代表的是当前时间的字符串
-
可以接受多种格式的参数,返回一个该参数对应的时间
-
参数为时间零点开始计算的毫秒数
new Date(1378218728000) // Tue Sep 03 2013 22:32:08 GMT+0800 (CST)
-
参数为日期字符串
日期字符串的格式: yyyy-mm-dd HH:MM:SS yyyy/mm/dd HH:MM:SS
年月日和时分秒之间有一个空格
当使用字符串这个形式的时候,1表示1月,12表示12月
new Date("2021-6-4") new Date("2021/6/4") new Date("06/04/2021") //Fri Jun 04 2021 00:00:00 GMT+0800 (中国标准时间)
-
参数为多个整数,代表年、月、日、时、分、秒、毫秒
new Date(2021,6,4,8,7,9,9) //Sun Jul 04 2021 08:07:09 GMT+0800 (中国标准时间)
参数为年月日多个整数时,年和月不能省略,其他参数可以省略,也就是说至少要有两个参数,因为如果只有一个参数的话,Date会将其解释为毫秒
参数的取值:
-
年:使用四位数的年份 2000
-
月:从0开始计算 即 0至11,0是1月,11是12月
-
日:从1开始计算,即1至31
-
时:0到23
-
分:0到59
-
秒:0到59
-
毫秒:0到999
注意:1秒等于1000毫秒
除了日的默认值是1,时分秒毫秒的默认值都是0
除了年以外的每一个数字都会自动进位
这些参数如果超出了正常范围,会被自动折算,比如月份设置为15,就会被折算为下一年的4月
new Date(2013, 15) // Tue Apr 01 2014 00:00:00 GMT+0800 (CST) new Date(2013, 0, 0) // Mon Dec 31 2012 00:00:00 GMT+0800 (CST) 上面代码的第二个例子,日期设为0,就代表上个月的最后一天。
-
-
-
日期的运算
两个日期实例对象进行减法运算时,返回的是他们之间间隔的毫秒数 即两个时间对象时间戳的差值
两个日期实例对象进行加法运算时,返回的是两个字符串拼接后的新的字符串
因为:类型自动转换,Date实例如果转为数值,则等于对应的毫秒数,如果转为字符串,则等于对应的日期字符串
var d1 = new Date(2000, 2, 1); var d2 = new Date(2000, 3, 1); d2 - d1 // 2678400000获得时间戳 d2 + d1 // "Sat Apr 01 2000 00:00:00 GMT+0800 (CST)Wed Mar 01 2000 00:00:00 GMT+0800 (CST)"
-
日期格式化(获取时间对象信息的方法)
Date对象提供了一系列get*放法,用来获取实例对象内部信息
格式:
-
时间对象.getFullYear() :返回时间对象的(4位)年份 Number数据类型
-
时间对象.getMonth():返回月份(0表示1月,11表示12月),返回的月份比实际的月份小1,要返回值加1 Number数据类型
-
时间对象.getDate():返回当天的日期(从1开始) Number数据类型
-
时间对象.getHours():返回小时(0至23) Number数据类型
-
时间对象.getMinutes(); 返回分钟(0至59) Number数据类型
-
时间对象.getSeconds();返回秒(0至59) Number数据类型
-
时间对象.getMilliseconds(): 返回当前时间的毫秒(0至999) Number数据类型
修改时间对象的某一指定信息 返回值是修改信息后时间戳
-
时间对象.setFullYear(你要设置的年) 作用:设置时间对象的年份信息
-
时间对象.setMonth(你要设置的月))
月份(0表示1月,11表示12月)
-
时间对象.setDate(你要设置的日))
-
时间对象.setHours(你要设置的小时))
-
时间对象.setMinutes(你要设置的分));
-
时间对象.setSeconds(你要设置的秒));
-
时间对象.setMilliseconds(你要设置的毫秒))
-
时间对象.setTime(时间戳)) 作用:根据时间戳,定位到指定的时间
var d1 = new Date(2000, 2, 1); 返回值是对象的时间戳 new Date(d1.setFullYear(1989));
-
--还有一套按照UTC时间的设置方法
-
-
获取世界标准时间的时间信息
时间对象.getUTCFullYear()
时间对象.getUTCMonth()
时间对象.getUTCDate()
时间对象.getUTCHourse()
时间对象.getUTCMinutes()
时间对象.getUTCSeconds()
时间对象.getUTCMilliSeconds()亲
时间对象.getDay(): 返回星期几 星期日为0,星期一为1... Number数据类型
var Day=new Date(); Day.getDay();
格林威治时间 1970年1月1日00:00:00 时间长河的起点,时间零点
时间戳:当前时间距离时间零点1970年1月1日00:00:00的过了多少毫秒数
获取指定时间的时间戳,可以带参数也可以不带参数,不带参数则是当前时间的时间戳,带参数则是指定时间的时间戳
-
时间对象.getTime([指定时间])
-
时间对象.valueOf([指定时间]))方法
-
+new Date([指定时间]))
var ms = +new Date();
var d1 = new Date(2020,10,2,2,2,2); console.log(d1.getTime()); //1604253722000 console.log(d1.valueOf()); //1604253722000 console.log(+new Date(2020,10,2,2,2,2)); //1604253722000
-
H5新增的方法
Date.now() 返回当前时间距离时间零点(1970年1月1日 00:00:00 UTC)的毫秒数,相当于 Unix 时间戳乘以1000 返回的是当前时间的时间戳,带参数指定时间的话,参数会被省略
Date.now() //静态方法,不用实例化
案例:
封装一个函数,返回当前的时分秒,格式为09:09:10
function getTime(){ var time=new Date(); var h=time.getHours(); h=h<10?'0'+h:h; var m=time.getMinutes(); m=m<10?'0'+m:m; var s=time.getSeconds(); s=s<10?'0'+s:s; return h+':'+m+':'+s; }
共有 0 条评论