Date、Error

1.Date

1.作用:保存一个日期或事件,提供操作日期和时间的API

2.创建方法:

1.获取系统当前日期和时间
    let now = new Date();
注意:只能获取客户端本地时间,无法获取服务器时间
2.自定义日期和时间
    let now = let Date("yyyy/MM/dd hh:mm:ss");
3.将ms转换为客户端日期对象
    let date = new Date(ms);
在网络间传输时间或在服务器存储时间,都用整数(毫秒数/秒数)
4.复制一个日期对象
  let date2 = new Date(date1); //将date1里的日期复制给date2
原因:因为日期计算都默认直接修改原日期对象

练习:设置一个时间,计算当前时间距离设置的时间的天时分秒

        let end = new Date("2020/11/16 12:00");
        let now = new Date();   //从客户端获取时间
        let s=parseInt((end-now)/1000);
        let d=parseInt(s/(60*60*24));
        let h=parseInt(s%(60*60*24)/3600);
        let m=parseInt(s%3600/60);
        s=s%60;
        document.write("距离指定时间还有:"+d+"天"+h+"小时"+m+"分"+s+"秒");

3.API

1.单位
    FullYear  Month  Date  Day --都没有s结尾
    Hours  Minutes  Seconds  Milliseconds --都有s结尾
2.每个单位都有一对getxxx()/setxxx()方法
    getxxx()负责获取单位的数值
        比如:now.getFullYear()  //2020
                now.getHours()  //11
    setxxx()负责修改指定单位的数值
        比如:now.setFullYear(2022)
                now.setDate(20)
    其中:setxxx(n)
        n可以是任意值,setxxx(n)可自动调整时间进制
    注意:day没有setDay()方法,因为day是推算出来的
3.取值范围
    Month:0~11
        注意:js中的月份比现实中小1,读取或修改时,可能需要+1或-1
    Date:1~31
    Day:0~6  日~六
    Hours:0~23
    Minutes/Second:0~59

4.日期计算

1.两日期对象可直接相减:结果是毫秒差
2.对任意单位做加减:
    先取值:let d=now.getDate();
    做加减:d+=30;
    放回去:now.setDate(d); //setxxx()可自动调整时间进制
注意:setxxx() 会直接修改原日期对象
    解决:先复制副本,再用副本计算
简写:now.setDate(now.getDate()+30);

5.将日期转为字符串

   date.toString(); 转化为当地时间的完整格式
   date.toLocaleStirng(); 转化为当地时间的简化版格式
   date.toLocaleDateString(); 简化版格式,仅保留日期部分
   date.toLocaleTimeString(); 简化版格式,仅保留时间部分
   date.toGMTString(); 转化为国际标准时间
   自定义格式化日期函数

练习:自定义一个函数,可以输出当前时间格式为 2020年09月02日 星期三 上午09:08

        function format(n){
            let date=new Date();
            let y,M,d,day,a,h,m;
            let week=["日","一","二","三","四","五","六"];
            y=date.getFullYear();
            M=date.getMonth()+1;
            M<10&&(M="0"+M);
            d=date.getDate();
            d<10&&(d="0"+d);
            day=week[date.getDay()];
            a=date.getHours()<12?"上午":"下午";
            h=date.getHours();
            h>12&&(h-=12);
            h<10&&(h="0"+h);
            m=date.getMinutes();
            m<10&&(m="0"+m);
            return y+"年"+M+"月"+d+"日 星期"+day+" "+a+h+":"+m;
        }
        console.log(format(new Date()));

2.Error

1.错误定义:程序执行过程中,导致程序无法正常执行的异常情况

错误处理:即使程序出错,也保证程序不会强行退出的机制

2.语法

    try{
        可能出错的正确代码
    }catch(err){  //err:错误对象,发生错误时,自动创建的保存错误信息的对象
        只有发生错误时,才执行的错误处理代码
        错误发生后应该做:1.提示用户 2.保存进度 3.记录日志
    }
问题:放在try…catch中的代码,执行效率可能降低,且生成错误对象,占用内存空间
解决:如果可以提前预知错误,则首选 if…else…来提前预防错误

3.错误类型

SyntaxError:语法错误
ReferenceError:引用错误,要用的变量没找到
TypeError:类型错误,错误的使用了对象的方法或 () 或 []
RangeError:范围错误,参数超范围
URIError: URI错误, 如果请求所使用的url拼接错误
EvalError:Eval错误

4.抛出错误

函数的作者向函数的调用者抛出自定义错误对象,告知调用者错误的使用了函数
语法:throw new Error("自定义错误提示信息");

练习:设置一个函数可以自定义四舍五入位数的函数,练习抛出错误功能

        function round(num,d){
            if(!isNaN(num)&&!isNaN(d)){
                num*=Math.pow(10,d);
                return Math.round(num)/Math.pow(10,d);
            }else{
                throw new TypeError("必须输入数字!");
            }
        }
        //引用函数
        let num=prompt("请输入一个数字");
        let d=prompt("请输入小数位数");
        if(!isNaN(num)&&!isNaN(d)){
            console.log(round(num,d));
        }else{
            alert("必须输入数字");
        }
        console.log("程序继续执行");

 

  

  

posted @ 2020-11-16 16:49  you_rgb  阅读(191)  评论(0)    收藏  举报
//一下两个链接最好自己保存下来,再上传到自己的博客园的“文件”选项中