JavaScript基础教程 日期对象详解
沉沙 2018-09-12 来源 : 阅读 653 评论 0

摘要:本篇教程介绍了JavaScript基础教程 日期对象详解,希望阅读本篇文章以后大家有所收获,帮助大家对JavaScript的理解更加深入。

本篇教程介绍了JavaScript基础教程 日期对象详解,希望阅读本篇文章以后大家有所收获,帮助大家对JavaScript的理解更加深入。

<

一.概要
 
    ECMAscript中的Date类型是早期根据Java的Java.until.Date类基础上构建的.Date类型使用自UTC(Coordinated Uiniversal Time,国际协调时间)1970年1月1日午夜(零时)开始经过的毫秒数来保存日期的.这种数据存储格式能够让Date类型保存的日期精确到1970年1月1日之前或之后的100000000年.
 
二.创建Date对象
 
 我们知道创建对象是通过new操作符加构造函数Object()来创建的,由此可以得知date对象是new操作符结合构造函数Date()来创建的.结构如下:
 
var date = new Date();
 
在不传入参数的情况下,该变量所接收的Date()对象是自动获取当前日期和时间的.如果想创建特定的日期对象,则需要传入参数,这个参数就是该特定日期的毫秒数(即从UTC时间1970年1月1日午夜起到该特定日期止所经过的毫秒数).这似乎听起来有些不可思议.我们如何知道该特定日期的毫秒数呢?
 
为此,ECMAscript提供了两个方法:Date.parse()和Date.UTC().
 


Date.parse():这个方法接收一个表示日期的字符串参数,然后根据这个字符串参数返回相应的日期毫秒数.这个日期的格式可能会因地区而异,换句话说,就是在中国会以中国北京时间的格式,在美国会以美国的格式,如下图所示:


 
  

 
比如为2017年12月2日创建一个日期对象,代码如下图:
 
 
 

而实际上,不用在参数里写上这个方法也是可以的,也就是说以上示例等价于如下图所示:
 

 

如果所传的字符串参数不能表示日期,那么它就会返回NaN,这个构造函数所创建的对象也就会返回一个invalid date(无效日期).如下图所示:
 

 
 
日期对象在不同的浏览器实现中均有着奇怪的行为.比如:在解析"2018/1/32(按照常理是没有1月32号这个说法的,只会返回无效日期)",有的浏览器会将其解析为:"2018/2/1",而oprea则更加怪异,会返回当前的日期,比如现在是2018年3月5日,也就是说会返回"2018/3/5".如下图一些怪异行为(oprea浏览器测试的)所示:
 

 

 
2.Date.UTC():这个方法同样返回的是日期的毫秒数.它与Date.parse()方法的参数不同,它的参数还有一些复杂,即年份,基于0的月份(一月是0,二月是1,依次类推),月中的哪一天(1到31号),小时数(0到23),分钟,秒以及毫秒数.第一和第二个参数是必需的,如果没有提供第三个参数,则假设天数为1,如果省略其它参数,则通通假设为0.
 
如下图一个示例:
 

 

同样的,这个方法也可以被省略,与Date.parse()不同的是,日期和时间都是基于本地地区来创建而非GMT.不过参数是必须与这个方法一样的.如下图所示:
 

 

ECMAscript5还添加了Date.now()方法,表示调用这个方法的日期和时间的毫秒数  这个方法简化了Date对象分析代码的工作.如下图所示:
 


 
支持这个方法的浏览器有IE9,Firefox3+,safari3+,opera10.5+和chrome.在不支持它的浏览器中,可以使用+操作符获取Date对象的时间戳.代码如下:
 

 
上图也说明一个for循环至少要消耗3毫秒的时间.
 
三.继承方法
 
既然Date类型也是一个对象,那么对象所拥有的方法,Date类型也同样拥有.比如valueOf()方法,toString()方法,toLocaleString()方法.但是这三个方法返回的值却与其它引用类型返回的值有所不同.如下图所示:
 

 
从上图中可以看出,valueOf()方法主要返回的是日期的毫秒数.toLocaleString()返回的则是当前的日期时间,而toString()则返回GMT中国标准时间,当然具体的值还会因地区而异,同样的也会因浏览器而异.
 
我们可以从valueOf()方法返回的值中使用比较操作符进行比较,如下图所示:
 

 
如上图所示,我把当前时间同2018年3月6日做了一次比较,也就是同时使用valueOf()方法返回的毫秒数做比较.从常理来讲,2018年3月6日比当前日期时间(即2018/3/7....)是要小的,因此第一次比较自然就返回了false,第二次比较才返回true.这为我们比较日期提供了很大的方便.
 
Date类型除了以上的继承方法,也还有一些格式化为字符串的方法.主要包含以下:
 


toDateString():显示周几,月,日,年.如下图所示:


 
 

 
   2.toTimeString():显示当前的GMT时间.如下图所示:
 
 
 
 

 
3.toLocaleDateString():显示年月日.如下图所示:
 
 
 

 
4.toLocaleTimeString():显示具体的某个时间(时,分,秒,也会指出是上午还是中午还是下午).如下图所示:
 
 

 
5.toUTCString():显示当前的GMT时间.如下图所示:
 

 
 
当然,以上方法所返回的值也会因浏览器和地区而异.另外为了保证兼容性,还有一个与toUTCString()方法等价的toGMTString()方法.这两个方法是等价的.如下图所示:
 

 
 
当然除了以上的日期格式化方法,还有一些日期时间组件方法,这些方法有点多,不必全部记忆,需要用到时翻阅资料查询即可.我也不必总结下来,不过,我记住了几个常用的,比如getTime(),表示获取当前的时间毫秒数,getFullYear(),表示获取年份.getDay(),获取天.getMonth()获取月份,getHour(),获取小时,getMinutes(),获取分钟,getSeconds()获取秒.    

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标WEB前端JavaScript频道!

本文由 @沉沙 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程