内置对象
数学对象
- Math 是js的一个内置对象,提供了一堆方法 帮我们操作数字
- 统一语法:Math.xxx();
Math.random()
- 作用:获取一个 0~1 之间的随机小数
- 返回值:0~1之间的随机小数
- 注意:有可能得到0,但是得不到1
Math.round()
- 返回值:数字四舍五入取整之后的结果
Math.ceil()
进一
- 返回值:数字向上取整的结果
Math.floor()
去尾
- 返回值:数字向下取整的结果
Math.pow()
- 返回值:取幂以后的结果
- 语法:Math.pow(底数,指数)
Math.abs()
- 返回值:数字取绝对值以后的结果
Math.sqrt()
- 返回值:该数字的算术平方根
Math.max(num1,num2,num3…)
- 作用:返回若干数字里面的最大值
Math.min(num1,num2,num3…)
- 作用:返回若干数字里面的最小值
Math.PI
- 得到的就是一个近似圆周率的值
- 注意:不要带小括号
内置对象
日期对象
new Date() 非常重要
- new Date()在不传递任何参数时,得到的是当前的时间
let time = new Date();
console.log(time);// Tue Jun 20 2023 10:46:55 GMT+0800 (中国标准时间)
// 周几 月份 日期 年份 时间 时区
-
new Date传递参数的多种情况
-
传递数字
let time = new Date();
console.log(time);// Tue Jun 20 2023 10:46:55 GMT+0800 (中国标准时间)
// 周几 月份 日期 年份 时间 时区
// 传递两个参数
let time2 = new Date(2008,9);
console.log(time2);// Sat Nov 01 2008 00:00:00 GMT+0800 (中国标准时间)
// 月份范围:0~11 0表示一月 11表示12月
// 传递三个参数
// 前两个参数意义不变,第三个表示该月的第几天 1~31
let time3 = new Date(2008,10,1);
console.log(time3); // Sat Nov 01 2008 00:00:00 GMT+0800 (中国标准时间)
// 获取08年的11月1号
// 传递四个
// 前面三个参数意义不变,第四个表示小时数 0~23
let time4 = new Date(2008,10,1,22);
console.log(time4); // Sat Nov 01 2008 22:00:00 GMT+0800 (中国标准时间)
// 传递五个、六个
// 前面四个不变,第五个表示分钟,第六个表示秒钟
// 分钟:0~59
// 秒钟:0~59
let time5 = new Date(2008,11,1,22,1800,59);
console.log(time5); // Mon Dec 01 2008 22:59:59 GMT+0800 (中国标准时间)
- 传递字符串
console.log(new Date("2019"));
console.log(new Date("2019-02"));// 月份取值范围:1~12
console.log(new Date("2019-02-03"));
console.log(new Date("2019-02-03 13:"));
console.log(new Date("2019-02-03 13:13"));
console.log(new Date("2019-02-03 13:13:13"));
日期格式化
let time = new Date(2019,9,1,12,13,15);
console.log(time); // Tue Oct 01 2019 12:13:15 GMT+0800 (中国标准时间)
// 获取年份 getFullYear()
let year = time.getFullYear();
console.log(year);
// 获取月份 getMonth()
// 0~11的取值 0表示1月 11表示12月
let month = time.getMonth() + 1;
console.log(month);
// 获取哪一天 getDate
let day = time.getDate();
console.log(day);
// 获取小时 getHours()
let hours = time.getHours();
console.log(hours);
// 获取分钟 getMinutes()
let minutes = time.getMinutes();
// 获取秒钟
let seconds = time.getSeconds();
// 获取周几 getDay
let week = time.getDay();
// 获取执行时间到“格林威治时间”的毫秒数
// getTime
let militime = time.getTime();
console.log(militime);
- 在编程世界中,有个特殊的时间
1970年1月1日00:00:00
- 在这个世界被叫做“格林威治时间”
- 在所有编程语言中,这个时间固定不变,且他对应的数字是0
- 从格林威治时间开始,没过一毫秒,数字就会+1;
/*
获取到现在的时间
1. 从时间对象中拿到年月日时分秒
Tue Oct 01 2019 12:13:15 GMT+0800 (中国标准时间)
2023-06-20 11:31:xx 上午/下午
2. 调整信息
- 月份 + 1
- 判断上/下午
- 调整为12小时制
- 调整星期信息
3. 组成字符串打印
*/
let time = new Date();
// 2023年 6月20号 上午 11:49:xx
let year = time.getFullYear();
let month = time.getMonth();
let date = time.getDate();
let hour = time.getHours();
let minutes = time.getMinutes();
let seconds = time.getSeconds();
let day = time.getDay();
// 调整信息
month += 1;
// 判断上午或下午
let str = hour < 12 ? "上午" : "下午";
// 调整为12小时制
hour = hour > 12 ? hour -= 12 : hour;
// 调整星期
let s = "日一二三四五六";
let week = `星期${s[day]}`;
// 3. 组装
let res = `${year}年${month}月${date}日${str}---${hour}点${minutes}分${seconds}秒 ${week}`;
console.log(res);
获取时间差
/*
获取时间差
计算当前时间距离到2023年双十一 00:00:00还有多少天(精确到秒)
*/
let time1 = new Date();
let time2 = new Date("2023-11-11 00:00:00");
let dTime = time2 - time1;
let day = dTime / (1000 * 60 * 60 * 24);
// 向下取整
day = Math.floor(day);
console.log(day);
let dHour = dTime - day * (1000*60*60*24);
let hour = dHour / (1000 * 60 * 60);
hour = Math.floor(hour);
console.log(hour);
let dMin = dHour - hour * (1000 * 60 * 60);
let minutes = dMin / (1000 * 60);
minutes = Math.floor(minutes);
console.log(minutes);
let dSec = dMin - 1000 * 60 * minutes
let seconds = Math.floor(dSec / 1000);
console.log(seconds);
let res = `距离双十一还有${day}天${hour}时${minutes}分${seconds}秒`;
console.log(res);
定时器
setTimeout(fn,时间)
- 定时一段时间后执行
- 时间是毫秒数,写0/不写 都会”立即执行“
- 定时器还可以拥有更多的参数,时间到了后多余的参数按顺序依次传递给fn
// setTimeout(function(){
// console.log("时间到了");
// },1000)
// setTimeout(function(a,b,c){
// console.log(a,b,c);
// },1000,"吃饭","睡觉","打游戏")
// function add(a,b){
// console.log(a+b);
// }
// setTimeout(add,1000,10,20); // 30
// setTimeout(add(10,20),1000)
// 清除定时器
let time = setTimeout(function(){
console.log("我执行了");
},1000)
// clearTimeout(你要清楚的定时器);
// clearTimeout()
clearTimeout(time)
// time可以用来清除定时器,它是一个数字,表示当前页面的第几个定时器。
setTimeout(function(){
console.log(10);
},1000)
setInterval(fn,时间)
- 反复调用的定时器
- 语法和setTimeout 类似
唯一要注意的是清除定时器的方法不一样,可以混着用,但是不建议。
let i = 0;
let res = setInterval(function(a,b){
console.log(i++);
console.log(a,b);
if(i == 5){
clearInterval(res)
}
},1000,10,20)
// 清除反复调用的定时器
// clearInterval(你要清除的定时器)
// setTimeout(function(){
// clearInterval(res)
// },5000)
初始异步
我们的两种定时器都属于异步语句,不会阻塞cpu继续执行其他的语句,当异步完成以后,去执行回调函数
// 异步的1
setTimeout(function(){
console.log(1);
})
// 同步的2 3
console.log(2);
console.log(3);
// 打印顺序 2 3 1