# 剑指前端(前端入门笔记系列)——Math对象&&Date对象

一、Math对象

  ECMAScript将一些常用的数学公式和信息封装到了一个对象中——Math对象,为我们实现数学方面的计算功能提供了便捷,而且该对象还提供了辅助完成这些计算的属性和方法

1.1 属性

console.log("自然对数的底数,即常量e的值:" , Math.E);
console.log("10的自然对数:" , Math.LN10);
console.log("2的自然对数:" , Math.LN2);
console.log("以2为底的e的对数:" , Math.LOG2E);
console.log("以10为底的e的对数::" , Math.LOG10E);
console.log("π的值:" , Math.PI);
console.log("2的平方根的倒数:" , Math.SQRT1_2);
console.log("2的平方根:" , Math.SQRT2);

在这里插入图片描述

1.2 方法

console.log("最小值:" , Math.min(1,2,3,4));
console.log("最大值:" , Math.max(1,2,3,4));
 
console.log("向上取整:" , Math.ceil(3.0000001));
console.log("向下取整:" , Math.floor(3.999999999));
console.log("四舍五入取整:" , Math.round(345.678));
 
console.log("[0,1)范围生成随机数:" , Math.random());
// 参数:两个参数分别是两个端点值,无前后顺序
// 内部实现:max和min的位置也无所谓,只要保证后面加的数是前面小括号中被减的数即可
function random1(min,max){
    return Math.round(Math.random() * (max-min) + min);
}
console.log("任意范围生成整数随机数:" , random1(5,10));
//第一个参数是可能值的总数,第二个参数是第一个可能的值
function random2(count,firstnum){
    return Math.floor(Math.random() * count + firstnum)
}
console.log("任意范围生成整数随机数:" , random2(6,5));
 
console.log("绝对值:" , Math.abs(-5));
console.log("平方根:" , Math.sqrt(16));
console.log("第一个参数的第二个参数次幂" , Math.pow(2,5));
 
//接收的参数为弧度值,角度转弧度公式为:Math.PI/180*角度
console.log("正弦值" , Math.sin(Math.PI/180*90));
console.log("余弦值" , Math.cos(Math.PI/180*90));
console.log("正切值" , Math.tan(Math.PI/180*45));

在这里插入图片描述

二、Date对象

  ECMAScript中的Date类型是在早期Java中的java.util.Date类基础上构建的。为此,Date类型使用自UTC(国际协调时间)1970年1月1日午夜(零时)开始经过的毫秒数来保存日期。在使用这种数据存储格式的条件下,Date类型保存的日期能够精确到1970年1月1日之前或之后的100 000 000 年。

2.1 创建

  因为时间总是在变化,所以每次使用日期对象,都要使用new操作符和Date构造函数创建一个新的日期对象,也就是:

2.1.1 默认参数

var now = new Date(); 
console.log(now);
  • 火狐的结果:
    在这里插入图片描述
  • 谷歌的结果:
    在这里插入图片描述

2.1.2 传入一个字符参数

  因为直接设置,没有涉及到计算,所以不会有从0开始的情况;没有设置的部分会清零;设置错误,显示意外的日期

var d1 = new Date("2018.08.08 20:08:08");
var d2 = new Date("2018.08.08");
var d3 = new Date("2018,08,08");
var d4 = new Date("2018-08-08");
var d5 = new Date("2018/08/08");
var d6 = new Date("2018/13/08");      //看总结
 console.log(d1);    
console.log(d2);
console.log(d3);
console.log(d4);
console.log(d5);
console.log(d6);
  • 火狐的结果:
    在这里插入图片描述
  • 谷歌的结果:
    在这里插入图片描述

2.1.3 传入多个数值参数

  涉及到计算,部分参数有从0开始的情况;没有设置的部分会清零;超出的部分会进1

var d1 = new Date(2008,7,8,20,8,8);
var d2 = new Date(2008,12,8,20,8,8);
var d3 = new Date(2008,7,8);
var d4 = new Date(2008,7,355);       //看总结
console.log(d1);
console.log(d2);
console.log(d3);
console.log(d4);
  • 火狐的结果:
    在这里插入图片描述
  • 谷歌的结果:
    在这里插入图片描述
    结合上面的这些例子,我们可得到以下几点:
  1. 每个浏览器支持的日期格式不同,显示日期的格式也不同。
  2. 传入一个字符参数的时候,最后一个月份写成十三月,程序会报错,这个符合常理
  3. 传入的是多个数值参数的时候,不再按常识来显示,而是有一套自己的规则,那就是月份和日期的取值从0开始,1月用0来表示,后面的依次提前一个位置,也就是12月为11,这个虽不符合常识,但很符合计算机的原理,之后会在获取日期的get系列中用实例来演示。
  4. 最后一个有点类似于之前传入一个字符参数的实例中,那个超出范围的例子,但在这里是行得通的,也就是写了超过范围的数值,会发生进位,比如:我写了13月,会进位到下一年的2月份。
  5. 火狐中日期在取值范围方面和月份有同样的规则,但谷歌没有。

2.2 获取(get系列)

var d = new Date();

//  从日期对象获取信息
console.log(d);
console.log("年份:" , d.getFullYear());
console.log("月份" , d.getMonth());       //从0开始,0表示一月
console.log("日期" , d.getDate());
console.log("星期" , d.getDay());         
console.log("------------------------------------------");
console.log("小时" , d.getHours());       
console.log("分钟" , d.getMinutes());     
console.log("秒钟" , d.getSeconds());     
console.log("毫秒" , d.getMilliseconds());

console.log("时间戳" , d.getTime());        //获取从1970年1月1日至今的毫秒

在这里插入图片描述

2.3 设置(set系列)

  除了获取日期,我们也可以设置日期,有两种方式。各参数中只有星期不能设置,会根据设置的其他参数自动获取,

  • 简易模式,简单粗暴,但是会清零时分秒
var d = new Date("2008/8/8");
console.log(d);

在这里插入图片描述

  • 复杂模式,每个部分都设置一遍,不设置的默认为当前时间的组成部分
var d = new Date();
d.setFullYear(2010);    //设置年
d.setMonth(6);          //设置月,超过11,累加年,0表示一月
d.setDate(27);          //设置日,超过最大日期,累加月,0表示一号
d.setHours(40);         //设置小时,超过24,累加天
d.setMinutes(40);       //设置分钟,超过60,累加小时
d.setSeconds(40);       //设置秒,超过60,累加分钟
d.setMilliseconds(40);  //设置毫秒,超过1000,累加秒
//d.setTime(10000);     //设置从1970年1月1日过去了多少毫秒,独立的设置日期的方式,相当于set系列其他的组合

console.log(d);          //返回更改后的年月日 时分秒

// set系列不像get系列需要拿返回值,但是本身也有返回值
// 返回值是从1970年1月1号 0:0:0到当前设置的日期的毫秒数
console.log(d.getMilliseconds());

在这里插入图片描述

2.4 格式化

  Date类型还有一些专门用于将日期格式化为字符串的方法,这些方法如下:

var d = new Date();
var d1 = d.toDateString();              //以特定于实现的格式显示星期几、月、日和年
var d2 = d.toTimeString();              //以特定于实现的格式显示时、分、秒和时区
var d3 = d.toLocaleDateString();        //以特定于地区的格式显示星期几、月、日和年
var d4 = d.toLocaleTimeString();        //以特定于实现的格式显示时、分、秒
var d5 = d.toLocaleTimeString();        //以特定于实现的格式显示完整的UTC日期

console.log(d);
console.log(d1);
console.log(d2);
console.log(d3);
console.log(d4);
console.log(d5);

在这里插入图片描述

三、总结

(1)Math对象中的方法的实用性很高,用来处理数据很方便。
(2)获取日期时,获取整体日期,直接找创建的日期对象,获取日期中的某一部分,用get系列。
(3)设置日期时,设置整体日期,直接在创建的时候传参,设置日期中的某一部分,用set系列

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值