首页 > 代码库 > JavaScript Date对象更进一步
JavaScript Date对象更进一步
总结分享这个近期开发解决的一个Bug。
Javascript的Date对象具有容错性,会自动根据当年的日期根据设置的属性值转换,也就是说Date对象的setDate会影响setMonth,而month会影响到setFullYear。
JavaScript的Date对象容错性
如果单独使用setDate、setMonth、setFullYear初始化Date对象的时候,Date未及时被初始化的属性会在你设置其他属性的时候影响到其他的属性值,
一般情况下,只会有setDate产生的影响所致,所以初始化应该由最基本的单元开始。
表达的有点晕,代码示例。
<html> <head> <script type="text/javascript"> //初始化一个Date对象,表示2014-07-31 var date = new Date(); date.setDate(31); date.setMonth(6); date.setFullYear(2014); //错误的设值方式 function wrongDate(date){ date.setFullYear(2014); document.write(date + "<br />"); date.setMonth(5); document.write(date + "<br />"); //这个时候date是2014-06-31被自动转换成2014-07-01 date.setDate(13); //当时认为date应该是2014-06-13,其实是2014-07-13 document.write(date + "<br />"); } //正确的设值方式 function correctDate(){ date.setDate(13); date.setMonth(5); date.setFullYear(2014); document.write(date + "<br />"); date.setMonth(5,13); date.setFullYear(2014); document.write(date + "<br />"); date.setFullYear(2014,5,13); document.write(date + "<br />"); } wrongDate(date); document.write("<br />----------------下面才是正确的---------------<br />"); correctDate(date); </script> </head> <body></body></html>
执行效果:
Thu Jul 31 2014 00:14:59 GMT+0800 (中国标准时间)Tue Jul 01 2014 00:14:59 GMT+0800 (中国标准时间)Sun Jul 13 2014 00:14:59 GMT+0800 (中国标准时间)----------------下面才是正确的---------------Fri Jun 13 2014 00:14:59 GMT+0800 (中国标准时间)Fri Jun 13 2014 00:14:59 GMT+0800 (中国标准时间)Fri Jun 13 2014 00:14:59 GMT+0800 (中国标准时间)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。