目录
1、Math 常用方法
(1)取最大最小值
最大值:Math.max() ;最小值:Math.min()
console.log(Math.max(1, 2, 3, 4, 5)); // 5
console.log(Math.min(1, 2, 3, 4, 5)); // 1
当这两个方法中的数据为数组时,是不能直接生效的:
let arr = [1, 2, 3, 4, 5];
console.log(Math.max(arr)); // NaN
这种情况可以使用 apply() 方法:
let arr = [1, 2, 3, 4, 5];
console.log(Math.max(arr)); // NaN
console.log(Math.max.apply(Math, arr)); // 5
console.log(Math.max.apply("", arr)); // 5
console.log(Math.max.apply(0, arr)); // 5
console.log(Math.max.apply(null, arr)); // 5
console.log(Math.max.apply(6, arr)); // 5
// 可以看出,此例中,apply() 中的第一个参数对结果没什么影响
(2)舍入
向上取整:Math.ceil() ;向下取整:Math.floor() ;四舍五入:Math.round()
let num = 123.123
console.log(Math.ceil(num)); // 124
console.log(Math.floor(num)); // 123
console.log(Math.round(num)); // 123
(3)生成随机数
Math.random():与其它语言类似,生成的随机数的区间为 [0, 1) ,结合 Math.floor() 和乘法运算,可以生成若干倍于此区间的随机整数。
// 生成 0 ~ 10 之间的随机数,不包括 10
console.log(Math.floor(Math.random() * 10));
// 生成 0 ~ 10 之间的随机数,包括 10
console.log(Math.floor(Math.random() * 11));
// 生成 3 ~ 10 之间的随机数,不包括 10
console.log(Math.floor(Math.random() * 7) + 3);
// 生成 3 ~ 10 之间的随机数,包括 10
console.log(Math.floor(Math.random() * 8) + 3);
2、Date
(1)获取当前时间
let date = new Date();
console.log(date); // Sat Jul 03 2021 13:48:04 GMT+0800 (中国标准时间)
console.log(Date()); // Sat Jul 03 2021 13:48:04 GMT+0800 (中国标准时间)
console.log(Date.now()); // 1625292681443 获取的为 1970 年 1 月 1 日至今的毫秒数。
console.log(date.getTime()); // 1625292681444 获取的为 1970 年 1 月 1 日至今的毫秒数。
通过使用 now() 或 getTime() 能计算脚本执行时间:
let start = Date.now();
for (let i = 0; i < 2000000000; i++) {}
let end = Date.now();
console.log(end - start); // 1064 结果为毫秒数
也可以使用控制台测试输出:
console.time("testFor");
for (let i = 0; i < 2000000000; i++) {}
console.timeEnd("testFor");
// 1069
// testFor: 1570.906005859375 ms
(2)根据指定的日期与时间定义日期对象
let date = new Date('2022-01-01 00:00:00');
console.log(date); // Sat Jan 01 2022 00:00:00 GMT+0800 (中国标准时间)
date = new Date(2022, 02, 02, 1, 1, 1);
console.log(date); // Wed Mar 02 2022 01:01:01 GMT+0800 (中国标准时间)
使用展示运算符,使用 console.dir() 能打印出当前对象的所有属性和属性值:
let dateArr = [2022, 1, 2, 3, 4, 5];
let date = new Date(...dateArr);
console.dir(date); // Wed Feb 02 2022 03:04:05 GMT+0800 (中国标准时间)
图2-1 控制台打印的 date 的部分属性和属性值
(3)类型转换
将日期转换为 Number 类型,返回值与 getTime() 一致,为毫秒值:
let date = new Date("2021-7-3 14:48:12");
console.log(date * 1);
console.log(Number(date));
console.log(date.valueOf())
console.log(date.getTime());
// 1625294892000
将时间戳转换为标准格式时间:
const dateArr = [2021, 7, 3, 14, 51, 33];
const date = new Date(...dateArr);
console.log(date); // Tue Aug 03 2021 14:51:33 GMT+0800 (中国标准时间)
const dtTime = date.getTime();
const dt = new Date(dtTime);
console.log(dt); // Tue Aug 03 2021 14:51:33 GMT+0800 (中国标准时间)
(4)封装格式化日期函数
代码来源:后盾人
function dateFormat(date, format = "YYYY-MM-DD HH:mm:ss") {
const config = {
YYYY: date.getFullYear(),
MM: date.getMonth() + 1,
DD: date.getDate(),
HH: date.getHours(),
mm: date.getMinutes(),
ss: date.getSeconds()
};
for (const key in config) {
format = format.replace(key, config[key]);
}
return format;
}
console.log(dateFormat(new Date(), "YYYY年MM月DD日")); // 2021年7月3日
(5)Date 对象的其他方法
日期格式化:日期格式化
日期获取方法:日期获取方法
日期设置方法:日期设置方法
(6)moment.js
Moment.js 是一个轻量级的 JavaScript 时间库,它方便了日常开发中对时间的操作,提高了开发效率。
中文官网:http://momentjs.cn/
在 html 页面导入:
<script src="https://cdn.bootcss.com/moment.js/2.24.0/moment.min.js"></script>
获取当前时间
console.log(moment().format("YYYY-MM-DD HH:mm:ss"));
// 2021-07-03 15:40:07
设置时间
console.log(moment("2021-07-04 15:29:15").format("YYYY-MM-DD HH:mm:ss"));
// 2021-07-04 15:29:15
console.log(moment("20210704 152915").format("YYYY-MM-DD HH:mm:ss"));
// 2021-07-04 15:29:15
获取十天后时间
console.log(moment().add(10, "days").format("YYYY-MM-DD hh:mm:ss"));
// 2021-07-03 03:40:07