《JavaScript 高级程序设计》学习总结五(3)

引言:前面两节我对 Object 与数组Array 及其方法进行了总结,篇幅很长,总结完后我感觉还是要多开几节来对第五章进行分节总结,不然排版的知识点看着的确是有些混乱。

     总结的学习的确是很痛苦并快乐的,痛苦在于知识点真的很多,总结起来很累,如何选取精简的内容,怎么排版都是考虑之中。而快乐之处在于,总结知识点往往能让我静下来重新看待这些问题,然后温故而知新。总之,学习的道路是没有捷径的。这期间我也意识到,以前我以为看完一本书就是目标,往往那时候一本书看完自己是学不到什么的,如今恍然大悟,其实,我们学习的出发点不是看完一本书或者是看书,而是从书本里学习到知识,那才是我们看书的目的。

Date类型:

  ECMAScript 中的Date 类型是在早起的 java .util.Dtae类型上构建的,所以 Date类型也是用“国际协调时间”,1970年1月1日 开始经过的毫秒数来保存日期。

创建Date对象:var now =new Date();

 在调用 Date 构造函数而不传参的情况下,新创建的对象自动获得当前时间,如果想要获得指定时间,必须传递毫秒数(从1970年1月1日 开始计算的毫秒数),这样的方法十分麻烦。所以为了简化这一过程,ECMAScript 创建了两个方法:Date.parse( ) 和 Date.UTC( )。

  Date.parse() 接收一个表示日期的字符串参数,然后根据这个参数返回相应的毫秒数。ECMA-262 没有定义 这个函数需要哪种固定的日期格式,所以这个方法的结果会因实际情况而异。

如果传入的参数字符串不能表示时间,则会返回NaN。 但是我们在 Date构造函数传递时间参数,那么在回台也会自动调用 Date.parse()。

例如: var now= new Date("2018/8/8"); 

   Date.UTC(): 方法同样也返回表示日期的毫秒数,但是它与Date.parse() 构建值时使用不同的信息,Date.UTC () 的参数分别是年份,基于0的月份(一月是0 ,二月是1 以此类推)。月份是 1——31,小时是 1——23.秒以毫秒数。在这些参数中只有年数和月份是必须的。如果没有设定天数则假设天数为1 。其他参数省略的话,则默认为 0 。

举个例子:var now=new Date(Date.UTC(2018,0,1));   //Mon Jan 01 2018 08:00:00 GMT+0800  可以看到 0 是1月。

PS:ECMAScript 5 添加了Date.now():方法,返回调用这个方法时的日期和时间的毫秒数。所以我们可以在某段代码开始时调用这个函数。结束时有调用这个函数,然后二者相减就可以得出函数运行时间了。支持这个方法的函数有 IE9+、Firefox 3+、Safari3+、Opera10.5、和Chrome。

而不支持的浏览器可以用:var start =+new Date(); (使用+ 操作符转成字符串来操作。)

Date类型的继承的方法:

与其他类型一样,Date类型也重写了 toLocaleString()、toString()、和valueOf() 方法。但这些方法返回的值与其他类型不同。 Date类型的 toLocaleString()会按照与浏览器设置地区相适应的格式返回日期时间。

而其 toString() 则通常返回带有时区信息的日期和时间。(我个人理解:其实说那么多,toLocalseString() 不就是我们前面说过的根据环境返回值么)

至于 valueOf() 则不返回字符串,而是返回日期的毫秒数,例如:

var now=new Date(Date.UTC(2018,1,1));
alert(now.valueOf());// 1517443200000

 日期的格式化方法:

Date类型还有一些专门用来将日期格式化的方法:

1、toDateString()——以特定格式显示时间(星期、月、日、年)。

2、toTimeString()——以特定格式显示时间(时、分、秒和时区)。

3、toLocaleString()——以特定时区显示时间(星期、月、日、年)。

4、toLocalseTIme()——以特定时区显示时间(时、分、秒)。

5、toUTCString()——以特定格式显示UTC时间。

非常让人值得吐槽的是这些方法的输出也和浏览器而异。所以显示的内容会因为浏览器不同而不一样。

日期 / 时间组件方法:

到目前为止,剩下还未介绍的 Date 类型的方法(如下表所示) ,都是直接取得和设置日期值中特
定部分的方法了。 需要注意的是, UTC 日期指的是在没有时区偏差的情况下 (将日期转换为 GMT 时间)
的日期值。

方 法  说 明
getTime()
返回表示日期的毫秒数;与 valueOf() 方法返回的值相同


setTime( 毫秒 )  以毫秒数设置日期,会改变整个日期


getFullYear()
取得4位数的年份(如2007而非仅07)


getUTCFullYear()返回UTC日期的4位数年份

setFullYear( 年 )  设置日期的年份。传入的年份值必须是4位数字(如2007而非仅07)


setUTCFullYear( 年 )  设置UTC日期的年份。传入的年份值必须是4位数字(如2007而非仅07)


getMonth()
返回日期中的月份,其中0表示一月,11表示十二月


getUTCMonth()
返回UTC日期中的月份,其中0表示一月,11表示十二月


setMonth( 月 )  设置日期的月份。传入的月份值必须大于0,超过11则增加年份


setUTCMonth( 月 )  设置UTC日期的月份。传入的月份值必须大于0,超过11则增加年份


getDate()
返回日期月份中的天数(1到31)


getUTCDate()
返回UTC日期月份中的天数(1到31)


setDate( 日 )  设置日期月份中的天数。如果传入的值超过了该月中应有的天数,则增加月份


setUTCDate( 日 )  设置UTC日期月份中的天数。如果传入的值超过了该月中应有的天数,则增加月份


getDay()
返回日期中星期的星期几(其中0表示星期日,6表示星期六)


getUTCDay()
返回UTC日期中星期的星期几(其中0表示星期日,6表示星期六)


getHours()
返回日期中的小时数(0到23)


getUTCHours()
返回UTC日期中的小时数(0到23)


setHours( 时 )  设置日期中的小时数。传入的值超过了23则增加月份中的天数


setUTCHours( 时 )  设置UTC日期中的小时数。传入的值超过了23则增加月份中的天数


getMinutes()
返回日期中的分钟数(0到59)


getUTCMinutes()
返回UTC日期中的分钟数(0到59)


setMinutes( 分 )  设置日期中的分钟数。传入的值超过59则增加小时数

setUTCMinutes( 分 )  设置UTC日期中的分钟数。传入的值超过59则增加小时数


getSeconds()
返回日期中的秒数(0到59)


getUTCSeconds()
返回UTC日期中的秒数(0到59)


setSeconds( 秒 )  设置日期中的秒数。传入的值超过了59会增加分钟数


setUTCSeconds( 秒 )  设置UTC日期中的秒数。传入的值超过了59会增加分钟数


getMilliseconds()
返回日期中的毫秒数


getUTCMilliseconds()
返回UTC日期中的毫秒数


setMilliseconds( 毫秒 )  设置日期中的毫秒数

setUTCMilliseconds( 毫秒 )  设置UTC日期中的毫秒数

getTimezoneOffset() 返回本地时间与UTC时间相差的分钟数。例如,美国东部标准时间返回300。在某 地进入夏令时的情况下,这个值会有所变化

-------------------------------------------------------------------------------------------------本章节完---------------------------------------------------------------------------------------------

这一章节着重总结了 引用类型中Date 类型的属性方法。

下章节预告:正则表达式,与 function 类型。 

猜你喜欢

转载自www.cnblogs.com/wxhhts/p/9436246.html