# Date和Math
# 1、Date
在JS中使用Date
对象来表示一个时间
# 创建一个时间对象
如果直接使用构造函数创建一个Date
对象,则会封装为当前代码执行的时间
// 创建一个Date对象
// 如果直接使用构造函数创建一个Date对象,则会封装为当前代码执行的时间
var d = new Date();
console.log(d); // Fri Jul 30 2021 21:51:37 GMT+0800 (中国标准时间)
1
2
3
4
2
3
4
# 创建一个指定的时间对象
需要在构造函数中传递一个表示时间的字符串作为参数
日期的格式:月/日/年 时:分:秒
d = new Date("08/01/2021 12:34:56");
console.log(d); // Sun Aug 01 2021 12:34:56 GMT+0800 (中国标准时间)
d = new Date("08/01/21 12:34:56"); // 为了避免在不同浏览器中产生歧义,尽量指定完整年份
console.log(d); // IE:Mon Aug 01 1921 12:34:56 GMT+0800 (中国标准时间)
1
2
3
4
2
3
4
# Date方法
# getDate()
获取当前日期对象是几日
var date = d.getDate();
console.log("date = " + date); // date = 30
1
2
2
# getDay()
获取当前日期对象时周几,会返回一个0-6的值
- 0 表示 周日
- 1 表示 周一
- ......
- 6 表示 周六
var day = d.getDay();
console.log("day = " + day); // day = 5
1
2
2
# getMonth()
获取当前时间对象的月份-会返回一个0-11的值
- 0 表示 1月
- 1 表示 2月
- ......
- 11 表示 12月
var month = d.getMonth();
console.log("month = " + month); // month = 6
console.log("month = " + (month + 1)); // month = 7
1
2
3
2
3
# getFullYear()
获取当前日期对象的年份
var year = d.getFullYear();
console.log("year = " + year); // year = 2021
1
2
2
# getTime()
获取当前日期对象的时间戳
时间戳,指的是从格林威治标准时间的1970年1月1日0时0分0秒到当前日期所花费的毫秒数
计算机底层在保存时间时使用都是时间戳
// 示例:表示从1970年1月1日0时0分0秒到2021年22时25分26秒所花费的毫秒数
var time = d.getTime();
console.log(d); // Fri Jul 30 2021 22:25:26 GMT+0800 (中国标准时间)
console.log("time = " + time); // time = 1627655017435
1
2
3
4
2
3
4
既然时间是从格林威治标准时间开始计算的,是不是就意味着1970年1月1日0时0分0秒的时间戳就是0呢?
var d2 = new Date("01/01/1970 00:00:00");
var time = d2.getTime();
console.log("time = " + time); // time = -28800000
1
2
3
2
3
我们发现事实并非如此,为什么呢?
这是因为我们的系统是中文系统,采用的是东八区时间,如何验证呢?
console.log("距离格林威治时间还有" + -time/1000/60/60 + "小时"); // 距离格林威治时间还有8小时
1
获取当前的时间戳
var currentTime = Date.now();
console.log("currentTime = " + currentTime); // currentTime = 1627655852125
1
2
2
# 其他
var hour = d.getHours();
var minute = d.getMinutes();
var second = d.getSeconds();
var mmilliSecond = d.getMilliseconds();
console.log("hour = " + hour); // hour = 22
console.log("minute = " + minute); // minute = 21
console.log("second = " + second); // second = 11
console.log("mmilliSecond = " + mmilliSecond); // mmilliSecond = 149
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# 2、Math
Math
和其他的对象不同,不是一个构造函数
属于一个工具类,不用创建对象,里边封装了数学运算相关的属性和方法
# Math对象属性
console.log(Math.E); // 2.718281828459045
console.log(Math.PI); // 3.141592653589793
1
2
2
# Math对象方法
# Math.abs()
可以用来计算一个数的绝对值
console.log(Math.abs(-1)); // 1
1
# Math.ceil()
可以对一个数进行向上取整,小数位只有有值就自动进1
console.log(Math.ceil(1.001)); // 2
console.log(Math.ceil(1.0)); // 1
1
2
2
# Math.floor()
可以对一个数进行向下取整,小数部分会被舍掉
console.log(Math.floor(1.999999)); // 1
1
# Math.round()
可以对一个数进行四舍五入取整
console.log(Math.round(1.4)); // 1
console.log(Math.round(1.5)); // 2
1
2
2
# Math.random()
可以用来生成一个0-1之间的随机数(开区间范围:(0, 1)
)
console.log(Math.random()); // 0.9192011449766921
console.log(Math.random()); // 0.736135736878959
1
2
2
生成一个0-10之间的随机数:Math.round(Math.random() * 10)
生成一个0-X之间的随机数:Math.round(Math.random() * X)
生成一个1-10之间的随机数:Math.round(Math.random() * 9 + 1)
生成一个X-Y之间的随机数:Math.round(Math.random() * (Y - X) + X)
# Math.max()
可以获取多个数中的最大值
console.log(Math.max(3,6,7,33)); // 33
1
# Math.min()
可以获取多个数中的最小值
console.log(Math.min(3,6,7,33)); // 3
1
# Math.pow()
Math.pow(x, y)
返回x的y次幂
console.log(Math.pow(2,10)); // 1024
1
# Math.sqrt()
用于对一个数进行开方运算
console.log(Math.sqrt(81)); // 9
1