Math 和 Date

目录

1、Math 常用方法

(1)取最大最小值

(2)舍入

(3)生成随机数

2、Date

(1)获取当前时间

(2)根据指定的日期与时间定义日期对象

(3)类型转换

(4)封装格式化日期函数

(5)Date 对象的其他方法

(6)moment.js


 

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/

英文官网:https://momentjs.com/

在 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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值