Math对象、Date对象、字符串对象、错误处理

一、Math对象

不需要创建对象,可以直接使用API
abs() 取绝对值
ceil() 向上取整
floor() 向下取整
round() 四舍五入取整
max() 取一组数字最大值
min() 取一组数字最小值
pow(x,y) 计算x的y次方

//圆周率
console.log( Math.PI );
//absolute 绝对的 求绝对值
console.log( Math.abs(4-8) );
//向上取整
console.log( Math.ceil(7.135) );
//向下取整
console.log( Math.floor(7.935) );
//四舍五入
console.log( Math.round(7.3) );
//一组数字最大值
console.log( Math.max(23,9,78,6,45) );
//一组数字最小值
console.log( Math.min(23,9,78,6,45) );
//x的y次方
console.log( Math.pow(5,2) );

1.Math.random()

Math.random() 获取一个随机数,范围0~1之间 >=0 && <1
练习:随机抽奖系统

//随机抽奖系统
var arr=['连君昊','弘鹏海','厍英卫','隆弘光','索乐然','益玉怡','陆小谷','符丝娜','戈梦曼','扶依珊','孔凝海','冯贝丽','陈夏槐','田恬静','车姝艳','钱章文','寇微婉','余娅童','璩俏美','钭紫菱','谷清佳','车姝艳'];
var index=Math.floor(Math.random()*arr.length);
console.log(index,arr[index]);

练习
在a~z之间随机取4个字母,然后放入到一个新数组中(不重复)

//在a~z之间随机取4个字母,然后放入到一个新数组中(不重复)
var arr= ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'];
var arr2=[];
//循环4次,每次取一个随机字母
for(var i=1;i<5;i++){
	//随机下标,向下取整(随机数*数组长度)
	var index=Math.floor(Math.random()*arr.length);
	//console.log(index,arr[index]);
	//把每次获取的随机字母放入到新数组arr2中
	arr2.push( arr[index] );
	arr.splice(index,1);
}
console.log(arr2,arr);

二、Date对象

用于对日期时间的存储和计算

1.创建Date对象

new Date(‘2021/03/16 10:41:30’) 默认都是0时区显示,对象中是字符串
new Date(2021,2,16,10,41,30) //月份为0~11表示为1~12月,不能为字符串
new Date() 表示当前时间
new Date(1000)距离计算机元年(1970-1-1 0:0:0 0)的毫秒数,会产生一个具体的日期时间

2.获取日期时间

getFullYear()
获取年
getMonth()+1
获取月份 0~11月对应1~12月
getDate()
获取日期
getHours()
获取小时
getMinutes
获取分
getSeconds
获取秒
getMilliseconds
获取毫秒
getDay()
获取星期 0~6对应星期日到星期六
getTime()
获取距离计算机元年的毫秒数

var d=new Date('2021/03/16 11:23:30'); //获取年
console.log( d.getFullYear() );
 //获取月份 0\~11月对应1~12月
 console.log(d.getMonth()+1 );
 //获取日期
console.log( d.getDate() );
//获取小时
console.log( d.getHours() );
//获取星期 0~6对应星期日到星期六
console.log( d.getDay() );
//获取距离计算机元年的毫秒数
console.log( d.getTime() );
练习:创建Date对象,包含当前操作系统 的时间,最后打印出以下效果:

今天是xxxx年xx月xx日 xx:xx:xx 星期二

//创建Date对象,包含当前操作系统 的时间,最后打印出以下效果:
//今天是xxxx年xx月xx日 xx:xx:xx 星期二
var d = new Date();
var year = d.getFullYear();
var month = d.getMonth()+1;
var date = d.getDate();
var hours = d.getHours();
var minute =d.getMinutes();
//console.log(fen);
if (second<10){
  second='0'+second;
}
var second =d.getSeconds();
//console.log(miao);
var xq =['星期日','星期一','星期二','星期三','星期四','星期五','星期六']
var day =d.getDay();
console.log('今天是'+year+'年'+month+'月'+date+'日'+' '+hours+':'+minute+':'+second+' '+xq[day]);
练习:计算距离2021年劳动节还有x天x小时x分x秒
//计算距离2021年劳动节还有x天x小时x分x秒
//创建两个对象,计算出
//两个对象直接相减得到 的是相差的毫秒数
var d1=new Date(); //获取当前时间
var d2=new Date('2021/5/1');//目标时间
d=d2.getTime()-d1.getTime();
//计算相差的毫秒数
d=parseInt(d/1000);
//计算相差的秒,只需要除以60
var second=d%60;
//计算相差的分,只需要去除相差的时间中含有的小时
var minute=d%3600;
//换算为分钟
minute=parseInt( minute/ 60 );
//计算相差的小时,只需要去除相差的时间中含有的天
var hour=d%(3600*24);
//换算为小时
hour=parseInt(hour/3600);
//计算相差的天
var date=d/(3600*24);
date=parseInt(date);
console.log('离2021年51假还有'+date+'天'+hour+'小时'+minute+'分'+second+'秒');

3.Date()本地字符串

toLocaleString()
获取完整时间
oLocaleDateString()
获取日期部分
toLocaleTimeString()
获取时间部分

var d=new Date();
//本地字符串,有兼容性问题,调试使用
console.log(d.toLocaleString() );
console.log(d.toLocaleDateString() );
console.log(d.toLocaleTimeString() );
修改日期

1.setFullYear() 设置年
2.setMonth() 设置月 0~11代表1到12月
3.setHours() 设置小时
4.setMinutes() 设置分
5.setSeconds() 设置秒
6.setMIlliseconds() 设置毫秒
7.setTime() 设置距离计算机元年毫秒数,产生具体的日期时间

 var d=new Date('2021/3/16 14:55:46');
 //设置年份
 d.setFullYear(2024);
 d.setMonth(13);//0~11设置月份
 d.setDate(20);//设置天
 //d.setDate(5); 不能设置星期
 //设置距离计算机元年毫秒数,会会产生一个具体的时间,覆盖之前的设置
 d.setTime(1500000000);
 console.log( d.toLocaleString() );
时间日期之前和日间日期之前的设定
//3年后,获取当前的年份,在这个基础之上加3,再把结果作为要设置的年份
var d=new Date('2019/3/16 14:55:46');
d.setFullYear( d.getFullYear()+3 );
//3天前
d.setDate( d.getDate()-3);
//2个小时后
d.setHours( d.getHours()+2)
console.log( d.toLocaleString() );
//软件需求:
//入职时间:2021/03/17  入职是周末提前到周五
//到期时间:
//续签时间:

var d1 = new Date('2021/3/17');
//保存入职时间
var d2= new Date(d1);
//到期时间
d2.setFullYear( d2.getFullYear()+3 );
var d3=new Date(d2);
//提前一个月签订
d3.setMonth( d3.getMonth()-1 );
//判断是否为周六和周日,如果是周六提前一天签订,周日提前二天签订
if(d3.getDay()==6){
	d3.setDate(d3.getDate()-1);
}else if(d3.getDay()==0){
	d3.setDate(d3.getDate()-2);
}
console.log('入职时间为'+d1.toLocaleDateString() );
console.log('到期时间为'+d2.toLocaleDateString() );
console.log('續簽时间为'+d3.toLocaleDateString() );

三、Number对象

1.Number对象创建

1.new Number() 将数据转为数值,返回对象
2.Number() 将数据转为数值,返回数值

2.Number的api

1.toFixed(n) n为保留小数点后面n数
2.toString(n) 不提供参数可以将数字转为字符串,提供参数n,n为进制数,也可以转为进度数

var n=2*3.14*5;
console.log( n.toFixed(2) );
//整数也可以使用
var total=3500*2+4000*3;
console.log( total.toFixed(2) );

四、Boolean对象

Boolean对象

new Boolean() 将数据l转为布尔型,返回对象
2.Boolean() 将数据转为布尔型,返回boolean

// false的五个值
// 0 NaN '' underfiend null

空数组,空对象转换为Boolean
!!数据 将数据隐式转换为布尔型

var arr=[];
var obj={};
console.log(Boolean(arr),Boolean(obj));

五、错误处理

1.语法错误SyntaxError

SyntaxError语法错误,程序执行前,检测出现的语法错误,例如:缺少括号,出现 中文符号

2.引用错误ReferenceERRor

使用了未申明的变量

3.类型错误TypeError

所调用的函数或者方法,不是一个函数

4.范围错误RangeError

数据的使用超出了规定的范围

5.自定义错误 程序员自己指定的错误

throw 错误内容

6.尝试执行

try{
可能产生的错误的代码,一旦报错执行catch中语句
}catch(err){
将错误内容放入到err中
执行错误处理
}

var age=65;
try{
	if(age<18 || age>60){
	throw '请提供一个合法的年龄';
	}	
}catch(err){
	//捕获错误,只有try中出现错误,才会执行
	//将错误信息放入到err,将不再影响后续代码执行
}

练习:
创建一个函数,传递任意一个日期,返回这个日期是一年的第多少天
getDays(2021,3,16)
getDays(‘2021/03/16’)

方法一:

function fn(num){
	var d1=new Date(num);
	var date=d1.toLocaleDateString();
	var year=d1.getFullYear();
	//设置为当年的1月1日
	var d2=new Date(d1);
	d2.setDate(1);
	d2.setMonth(0);
	//console.log(d2);
	//算出相差的毫秒数
	var day=d1.getTime()-d2.getTime();
	//转为天数,因为是从第0天算,所以加上一天
	day =day/(1000*60*60*24)+1;
	console.log(date+'是'+year+'年的第'+day+'天');
}
fn('2012/03/05');//请输入字符串

方法二:

//创建函数,分别用户选择年月日
function getDays(year,month,date){
	//接收用户输入的年月日
	var d1=new Date(year,month-1,date+1);
	//创建当年的1月1日
	var d2=new Date(year,0,1);
	//算出相差的毫秒数
	var d3=d1-d2;
	//转换为天数,返回结果
	return d3/(1000*60*60*24);
}
console.log(getDays(2021,3,17));
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

晚生隆海

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值