JavaScript高级程序设计(第3版)学习笔记11 内建(7)

  ECMAScript中的Date对象和Java中的java.util.Date一样,采用UTC(Coordinated Universal Time,国际协调时间)1970年1月1日午夜(零时)开始经过的毫秒数来保存日期。

(1)创建日期对象

  A、构造函数:可以通过new Date()创建对象自动获取当前日期和时间,也可以传入表示日期的毫秒数来创建日期,还可以传入和下面的Date.parse()与Date.UTC()相同的参数(在后台会先调用Date.parse()或Date.UTC(),后台调用Date.UTC()时是基于系统本地时区而非GMT创建的)来创建日期。

  B、Date.parse():接受一个表示日期的字符串参数,然后尝试根据这个字符串返回相应日期的毫秒数。日期格式和具体的实现及地区有关。如果传入的字符串不能表示日期,返回NaN。

  C、Date.UTC():返回表示日期的毫秒数,参数分别是年份、基于0的月份、月中的哪一天(1~31)、小时(0~23)、分钟、秒以及毫秒数,这些参数中,前面两个参数(年月)是必须的,没有提供天数时默认为1,其它参数没有提供时默认为0。

  D、Date.now():在ES5中新增,返回表示调用这个方法的日期和时间的毫秒数。这可以用来分析代码执行的时间:

复制代码 代码如下:


//支持Date.now()时     //不支持Date.now()的情况下
var start = Date.now(); var start = +new Date();
//doSomething();     //doSomething();
var end = Date.now();  var end = +new Date();
var time = end -start; var time = end - start;



(2)方法列表

方法   说明   getter/setter方法   说明  
toLocaleString()   按照与浏览器设置的地区相适应的格式返回日期和时间,其中时间一般以12小时制表示(通常含AM或PM)   setTime(毫秒)   没有对应的UTC方法  
toString()   通常返回带有时区信息的日期和时间,其中时间一般以24小时制表示   setFullYear(年)   4位数的年份  
valueOf()   返回日期的毫秒表示,这为日期的比较提供了便利   setMonth(月)   0~11,0表示一月,11表示十二月,超过11增加年份  
toDateString()   以特定于实现的格式显示星期几、月、日和年   setDate(日)   超过范围时会增加月份  
toTimeString()   以特定于实现的格式显示时、分、秒和时区   setHours(时)   传入值超过了23会增加天数  
toLocaleDateString()   以特定于实现的格式显示星期几、月、日和年   setMinutes(分)   传入值超过了59会增加小时数  
toLocaleTimeString()   以特定于实现的格式显示时、分、秒   setSeconds(秒)   传入值超过了59会增加分钟数  
toUTCString()   以特定于实现的格式显示完整的UTC日期   setMilliseconds(毫秒)      
toGMTString()   和toUTCString()等价,主要是为了向后兼容而保留的   getDay()   没有对应的setter方法,0表示星期日,6为星期六  
getTimezoneOfSet()   返回本地时间与UTC时间相差的毫秒数          

说明:上表getter/setter列中,除了setTime()外,均有一套相应UTC方法,比如对应setFullYear()有getFullYear()、setUTCFullYear()、getUTCFullYear()方法。

6、Error

(1)从ES3开始引入了try-catch语句,用于捕获异常,结构和Java中的异常处理类似。这里需要注意的是,在使用finally子句时,如果里面有return语句,由于finally语句无论怎样都会执行,因此会覆盖之前的return语句。

复制代码 代码如下:


function testFinally(){
try{
return 2;
}catch(error){
return 1;
}finally{
return 0;
}
}
console.info(testFinally());//0


说明:按照规范,catch和finally子句只要有一个即可,但是在IE7的实现中有一个bug,没有catch子句时就不会执行finally子句,所以为了保证兼容性,每一个try都加上catch子句(如果需要在外层处理,可以把捕获的异常使用throw向外抛出)。

(2)错误类型

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wddsdw.html