笔记来源尚硅谷最新版JavaScript基础全套教程完整版(140集实战教学,JS从入门到精通)_哔哩哔哩_bilibili

Date和Math

1、Date

在JS中使用Date对象来表示一个时间

创建一个时间对象

如果直接使用构造函数创建一个Date对象,则会封装为当前代码执行的时间

  1. // 创建一个Date对象
  2. // 如果直接使用构造函数创建一个Date对象,则会封装为当前代码执行的时间
  3. var d = new Date();
  4. console.log(d); // Fri Jul 30 2021 21:51:37 GMT+0800 (中国标准时间)

创建一个指定的时间对象

需要在构造函数中传递一个表示时间的字符串作为参数

日期的格式:月/日/年 时:分:秒

  1. d = new Date("08/01/2021 12:34:56");
  2. console.log(d); // Sun Aug 01 2021 12:34:56 GMT+0800 (中国标准时间)
  3. d = new Date("08/01/21 12:34:56"); // 为了避免在不同浏览器中产生歧义,尽量指定完整年份
  4. console.log(d); // IE:Mon Aug 01 1921 12:34:56 GMT+0800 (中国标准时间)

Date方法

11-Date和Math - 图1

getDate()

获取当前日期对象是几日

  1. var date = d.getDate();
  2. console.log("date = " + date); // date = 30

getDay()

获取当前日期对象时周几,会返回一个0-6的值

  • 0 表示 周日
  • 1 表示 周一
  • ……
  • 6 表示 周六
  1. var day = d.getDay();
  2. console.log("day = " + day); // day = 5

getMonth()

获取当前时间对象的月份-会返回一个0-11的值

  • 0 表示 1月
  • 1 表示 2月
  • ……
  • 11 表示 12月
  1. var month = d.getMonth();
  2. console.log("month = " + month); // month = 6
  3. console.log("month = " + (month + 1)); // month = 7

getFullYear()

获取当前日期对象的年份

  1. var year = d.getFullYear();
  2. console.log("year = " + year); // year = 2021

getTime()

获取当前日期对象的时间戳

时间戳,指的是从格林威治标准时间的1970年1月1日0时0分0秒到当前日期所花费的毫秒数

计算机底层在保存时间时使用都是时间戳

  1. // 示例:表示从1970年1月1日0时0分0秒到2021年22时25分26秒所花费的毫秒数
  2. var time = d.getTime();
  3. console.log(d); // Fri Jul 30 2021 22:25:26 GMT+0800 (中国标准时间)
  4. console.log("time = " + time); // time = 1627655017435

既然时间是从格林威治标准时间开始计算的,是不是就意味着1970年1月1日0时0分0秒的时间戳就是0呢?

  1. var d2 = new Date("01/01/1970 00:00:00");
  2. var time = d2.getTime();
  3. console.log("time = " + time); // time = -28800000

我们发现事实并非如此,为什么呢?

这是因为我们的系统是中文系统,采用的是东八区时间,如何验证呢?

  1. console.log("距离格林威治时间还有" + -time/1000/60/60 + "小时"); // 距离格林威治时间还有8小时

获取当前的时间戳

  1. var currentTime = Date.now();
  2. console.log("currentTime = " + currentTime); // currentTime = 1627655852125

其他

  1. var hour = d.getHours();
  2. var minute = d.getMinutes();
  3. var second = d.getSeconds();
  4. var mmilliSecond = d.getMilliseconds();
  5. console.log("hour = " + hour); // hour = 22
  6. console.log("minute = " + minute); // minute = 21
  7. console.log("second = " + second); // second = 11
  8. console.log("mmilliSecond = " + mmilliSecond); // mmilliSecond = 149

2、Math

Math和其他的对象不同,不是一个构造函数

属于一个工具类,不用创建对象,里边封装了数学运算相关的属性和方法

Math对象属性

11-Date和Math - 图2

  1. console.log(Math.E); // 2.718281828459045
  2. console.log(Math.PI); // 3.141592653589793

Math对象方法

11-Date和Math - 图3

Math.abs()

可以用来计算一个数的绝对值

  1. console.log(Math.abs(-1)); // 1

Math.ceil()

可以对一个数进行向上取整,小数位只有有值就自动进1

  1. console.log(Math.ceil(1.001)); // 2
  2. console.log(Math.ceil(1.0)); // 1

Math.floor()

可以对一个数进行向下取整,小数部分会被舍掉

  1. console.log(Math.floor(1.999999)); // 1

Math.round()

可以对一个数进行四舍五入取整

  1. console.log(Math.round(1.4)); // 1
  2. console.log(Math.round(1.5)); // 2

Math.random()

可以用来生成一个0-1之间的随机数(开区间范围:(0, 1)

  1. console.log(Math.random()); // 0.9192011449766921
  2. console.log(Math.random()); // 0.736135736878959

生成一个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()

可以获取多个数中的最大值

  1. console.log(Math.max(3,6,7,33)); // 33

Math.min()

可以获取多个数中的最小值

  1. console.log(Math.min(3,6,7,33)); // 3

Math.pow()

Math.pow(x, y)返回x的y次幂

  1. console.log(Math.pow(2,10)); // 1024

Math.sqrt()

用于对一个数进行开方运算

  1. console.log(Math.sqrt(81)); // 9