day08 - javascript中的Math和日期对象Date

1.Math对象:

Math的一个属性 - PI - 圆周率
语法:Math.PI

(1)Math常用API:

用法 语法
绝对值 Math.abs()
最大值 Math.max()
最小值 Math.min()
随机数 Math.random()  // 产生的是一个0-1之间的小数,含0不含1//将随机数扩大十倍 :parseInt(Math.random()*10) [范围0-9]
向上取整 Math.ceil()//例如1.2,向上取整的2
向下取整 Math.floor()//例如1.2,向下取整的1
四舍五入 Math.round(值)
求次方 Math.pow(底数,幂)
算术平方根(开根号) Math.sqrt(值)

获取随机数:

function getRandom(a,b){    
	var max = Math.max(a,b);    
	var min = Math.min(a,b);    
	return parseInt( Math.random()*(max-min) )+min
}

案例:获取随机颜色值

//html代码:
<body>    
	<input type="text" id="text">
</body>

//js代码:
function getRGB(){    
	var arr = [];    
	for(var i=0;i<3;i++){        
		arr.push(Math.floor(Math.random()*255)); // 得到一个0~255的随机数    
	}    
	var str = '#';    
	for(var i in arr){        
		str += arr[i].toString(16); // 将每个随机数遍历并转为16进制    
	}    
	return str;
}
console.log(getRGB());
text.style.background = getRGB();      

(2)进制间的转换:

tostring方法将十进制(D)数字转为其他进制。

数字.toString(将十进制数字转为指定的进制数)
var x = 110;
x.toString(2) //转为2进制(B)
x.toString(8) //转为8进制(O)
x.toString(16) //转为16进制(H)

parseInt方法将其他进制数字转为十进制。

parseInt(被转换的数据,将数据当做什么进制转换)
var x = "110" //这是一个二进制的字符串表示
parseInt(x, 2) //把这个字符串当做二进制, 转为十进制
var x = "70" //这是一个八进制的字符串表示
parseInt(x, 8) //把这个字符串当做八进制, 转为十进制
var x = "ff" //这是一个十六进制的字符串表示
parseInt(x, 16) //把这个字符串当做十六进制, 转为十进制
注意:parseInt方法是用于将字符串转为数字的方法。 接受两个参数。
 	第一个要转换的字符串,第二个是可选的, 
 	如果没有值, 默认是10进制; 如果有值, 就是以该值为转换进制。

2.Date对象:

(1)创建日期对象:

var date = new Date(); //使用构造函数创建一个当前时间的对象

得到日起对象可以传入时间:
var date = new Date("2017-03-22"); //创建一个指定时间的日期对象
var date = new Date("2017-03-22 00:52:34"); //创建一个指定时间的日期对象
var date = new Date(2017, 2, 22, 0, 52, 34); //(年,月,日,时,分,秒)
var date = new Date(1523199394644); //参数:毫秒值
注意:Date构造函数当不传递任何参数的时候,返回的是当前时间。当传入参数的时候,获取的是传进去的时间。    

(2)获取时间 - get:

使用日期对象的方法获取日期的指定部分:
对象.getFullYear(); //获取4位的年份
对象.getMonth(); //获取月  (注意从0开始计算,1-12月份使用0-11来描述)
对象.getDate(); //获取日(即当月的第几天)
对象.getDay(); //获取星期 (0-6   0:星期天)
对象.getHours(); //获取时
对象.getMinutes(); //获取分
对象.getSeconds(); //获取秒
对象.getMilliseconds(); //获取毫秒(一秒  === 1000毫秒)
对象.getTime(); //获取时间戳
案例:将日期格式化成字符串
function formatDate(date) {    
	var d = new Date(date),    
	month = '' + (d.getMonth() + 1),    
	day = '' + d.getDate(),    
	year = d.getFullYear();    
	if (month.length < 2) month = '0' + month;    
	if (day.length < 2) day = '0' + day;    
	return [year, month, day].join('-');
}
console.log(formatDate('May 13,2016')); //2016-05-13    

(3)设置时间 - set:

date.setFullYear(2016) // 将日期对象中的年份设置为2016    	
	date.setFullYear(year,month,day)
date.setMonth(3) // 将日期对象中的月份设置为4月份
date.setDate(15) // 将日期对象中的日期设置为15号
date.setHours(12) // 将日期对象中的小时设置为12点
date.setMinutes(56) // 将日期对象中的分钟设置为56分
date.setSeconds(23) // 将日期对象中的秒数设置为23秒
date.setMilliseconds() //设置毫秒数
注意:set的时候传入的参数超出了正常范围,会自动的前后推算。      

(4)日期转为毫秒数(时间戳):

时间戳 - 就是从197011000秒开始到现在走过的毫秒数
Date.parse("年月日时分秒的字符串") // 获取1970年到设定时间的毫秒数
new Date().getTime()
+new Date();
Date.now();//获取当前的时间戳
案例:计算两个日期的时间差值
function count(){    
	var date1=new Date(2010,10,3);    
	var date2=new Date(2017,9,24);    
	var date=(date2.getTime()-date1.getTime())/(1000*60*60*24);/*不用考虑闰年否*/    
	alert("相差"+date+"天");}    

(5)日期格式化:

date.toLocalString();//本地风格的日期格式
date.toLocaleDateString(); // 获取日期
date.toLocaleTimeString(); // 获取时间

eg:距离5月1号00:00:00 还有多少天多少小时多少分多少秒

// 在定时器之前获取一遍,防止打开网页过一秒才显示
var now = new Date(); // 获取当前时间
var Mayday = new Date("2020-5-1"); // 获取五一的事件对象
var differ = Mayday.getTime() - now.getTime(); // 求出时间戳的差
var days = parseInt(differ/1000/60/60/24); // 根据毫秒数得到天数
var hours = parseInt(differ/1000/60/60)%24; // 根据毫秒数得到小时
var minutes = parseInt(differ/1000/60)%60; // 根据毫秒数得到分钟
var seconds = parseInt(differ/1000)%60; // 根据毫秒数得到秒数
box.innerHTML = ("距离五一还有"+days+"天"+hours+"小时"+minutes+"分"+seconds+"秒");

setInterval(function(){    
	var now = new Date(); // 获取当前时间    
	var Mayday = new Date("2020-5-1"); // 获取五一的事件对象    
	var differ = Mayday.getTime() - now.getTime(); // 求出时间戳的差    
	var days = parseInt(differ/1000/60/60/24); // 根据毫秒数得到天数    
	var hours = parseInt(differ/1000/60/60)%24; // 根据毫秒数得到小时    
	var minutes = parseInt(differ/1000/60)%60; // 根据毫秒数得到分钟    
	var seconds = parseInt(differ/1000)%60; // 根据毫秒数得到秒数    
	box.innerHTML = ("距离五一还有"+days+"天"+hours+"小时"+minutes+"分"+seconds+"秒");
},1000)

你可能感兴趣的:(javascript)