day12 math对象 date对象

125 阅读4分钟

1、Math对象:专门提供了数学计算的API 强调:Math不需要创建,可以直接使用的

属性:Math.PI - 其实我们程序员根本不用自己创建那个3.1415926,在js中自带此操作

API:
	1、取整:3种
		1、上取整:超过一点点,就会取下一个整数
			var num=Math.ceil(num);
			特殊:num小数位数不能超过15位,一旦超过,上取整失效,直接取整数

		2、下取整:无论超过多少,都会省略掉小数部分
			var num=Math.floor(num);

		3、四舍五入取整:
			var num=Math.round(num);//只看小数的第一位

		以上三个API都是垃圾:都是在取整,只能取整
		取整的方式:以上三个、*parseInt、*num.toFixed(d);//d代表的是保留的小数位数,0其实也可以取整,而且此方法也带有四舍五入,
							   唯一的缺点就是结果是一个字符串,建议搭配上一个parseFloat();

		//鄙视题:不允许使用toFixed的情况下,自己封装一个函数,实现toFixed的操作
		function round(num,d){
			num*=Math.pow(10,d);
			num=Math.round(num);
			num/=Math.pow(10,d);
			return num;
		}
		var result=round(Math.PI,4)

	2、*乘方:解决你的连乘操作:Math.pow(底数,幂);
	      开方:只能开平方:Math.sqrt(num);

	3、*最大值和最小值:var max/min=Math.max/min(num1,num2,num3,num4,....);
		问题:本身不支持数组参数
		解决:固定用法:var max/min=Math.max/min.apply(Math,arr);
			apply是ES5提供的新操作,其中一个作用就是可以将数组悄悄的打散

	4、绝对值:将负数转为正数
		Math.abs(负数);

	5、***随机数的原理:Math.random() 就已经得到随机数了,在0~1之间取出一个随即小数,
			搭配上parseInt过后,只能取到0,但是绝对不能取到1,意味着能取到最小值,但是取不到最大值
			所以衍生出了我们的公式
		随机整数公式:parseInt(Math.random()*(max-min+1)+min);

2、Date:日期对象,提供了对时间进行操作的API 1、创建:4种 1、*获取当前时间: var now=new Date();

	2*创建自定义时间:
		var birth=new Date("yyyy/MM/dd hh:mm:ss");
	
	3、创建自定义时间:
		var birth=new Date(yyyy,MM-1,dd,hh,mm,ss);
		特殊:月份需要进行修正,0~110代表14*复制日期:
		为什么:日期的所有的API都是直接修改原日期的,无法获得修改之前的日期
		所以,在执行API之前先进行复制,然后在对复制后的日期进行操作
		var end=new Date(start);

2、操作:
	1、两个日期对象之间可以相减,得到一个毫秒差,换算出自己想要的某一部分 - 日期的本质/底层其实就是保存了一个毫秒数
		创建的最后一个方式:var date=new Date(毫秒数); - 绝对不用此方法

	2、API:
		分量:时间的单位
		年月日星期:FullYear Month Date Day
		时分秒毫秒:Hours Minutes Seconds Milliseconds
		每一个分量都有一对儿getXXX/setXXX;
			其中getXXX负责获取某一个分量的值
			其中setXXX负责设置某一个分量的值
		*特殊:
			1、取值范围:
				FullYear - 当前年份的数字
				Month - 0~11
				Date - 1~31
				Day - 0~60代表星期天,在外国人的眼里,星期天是一个星期的第一天
				Hours - 0~23
				Minutes、Seconds:0~59

			2、日期对象在控制台长得很像字符串,但是不是字符串,在设置时如果超过了取值范围,他会自动进制

			3Day是不允许设置的,星期是一天一天推算过来的,并不是设置的

			4、如果希望对某个分量进行加减操作
				date.setXXX(date.getXXX()+/-n)

			5、格式化日期为【本地】【字符串】:
				date.toLocaleString(); - 垃圾:具有兼容性问题,解决:自定义format函数格式化
				用了此方法会失去一些东西:日期对象的自动进制、日期对象的API - 因为转为了一个字符串了,但是你得到了字符串的API
					

作业: 1、把每一个新知识点都尝试一下(尤其是:加了星号的部分) 2、随机选双色球:- 数据渲染 红球:133 取出6个 蓝球:116 取出1个 绝对不能出现重复的 一切的排序功能,底层都是数组 一切的随机功能,底层一定用到了随机数 3、让用户输入自己的入职时间,计算出3年后的合同到期时间,并且合同到期前一个月进行续签,计算出续签时间,人事在续签前一周需要进行提醒,计算出提醒时间 如果续签时间是周末,那就提前到周五,最后格式化日期 4、倒计时:距离放学还有多久 - 距离下周一放学还有多久几天几个小时几分几秒 5、继续完成QQ注册