总结分享这个近期开发解决的一个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 (中国标准时间)

JavaScript Date对象更进一步的更多相关文章

  1. JavaScript Date 对象

    JavaScript Date 对象 Date 对象 Date 对象用于处理日期与实际. 创建 Date 对象: new Date(). 以上四种方法同样可以创建 Date 对象: var d = n ...

  2. JavaScript Date对象 日期获取函数

    JavaScript Date对象使用小例子: 运行结果: 总结: 1.尽管我们认为12月是第12个月份,但是JavaScript从0开始计算月份,所以月份11表示12月: 2.nowDate.set ...

  3. JavaScript Date对象介绍

    原文:JavaScript Date对象介绍 Date 日期和时间对象 1. 介绍 Date对象,是操作日期和时间的对象.Date对象对日期和时间的操作只能通过方法. 2. 构造函数 2.1 new ...

  4. JavaScript&Date对象

    JavaScript Date对象 <script type="text/javascript"> var date = new Date(); document.wr ...

  5. javascript Date对象 之 date初始化

    javascript Date对象 --> 日期初始化: 总结: 日期初始化的 方式: 1. new Date( yyyy, M(+), d(+), h(+), m(+), s(+) ); 2. ...

  6. javascript Date对象 之 时间转字符串

    javascript Date对象 --> 时间转字符串: 测试代码: <!DOCTYPE html> <html lang="en"> <he ...

  7. javascript Date对象 之 获取时间

    javascript Date对象 --> 获取时间: 测试代码: <!DOCTYPE html> <html lang="en"> <head ...

  8. javascript Date对象 之 设置时间

    之前对js的date对象总是感觉熟悉,而不愿细细深究其所以然,所以每当自己真正应用起来的时候,总会糊里糊涂的,今日花费2个小时的时间仔细钻研了一下,感觉 豁然开朗,故,以此记录,一来 供以后查阅,二来 ...

  9. 浏览器端-W3School-JavaScript:JavaScript Date 对象

    ylbtech-浏览器端-W3School-JavaScript:JavaScript Date 对象 1.返回顶部 1. Date 对象 Date 对象用于处理日期和时间. 创建 Date 对象的语 ...

随机推荐

  1. 应用之星在线app开发平台,菜鸟也会做应用

    看着各类应用平台玲琅满目的应用,你是否幻想过,如果里面能有一款我开发的应用是件多NB的事,平凡的你肯定会说,我又不会设计又不会代码,怎么可能?现在告诉你,这不是幻想,即使你不会设计也不会代码,一样可以 ...

  2. mysql基础:数据库的创建,增删改查

    =============查看数据库========================== 使用SHOW语句找出服务器上当前存在什么数据库: mysql> SHOW DATABASES; +--- ...

  3. 基于内容的图片检索CBIR(Content Based Image Retrieval)简介

    传统的图像检索过程,先通过人工对图像进行文字标注,再利用关键字来检索图像,这种依据图像描述的字符匹配程度提供检索结果的方法,简称“以字找图”,既耗时又主观多义.基于内容的图像检索客服“以字找图”方式的 ...

  4. 使用SmsManager服务群发短信

    SmsManager是Android提供的一个非常常见的服务,SmsManager提供了一系列sendXxxMessage()方法用于发送短信,不过短信通常都是普通文本,调用sendTextMessa ...

  5. aix 禁止root远程登录

    Aix禁止root远程登录 aix用户扩展信息大都在/etc/security/user这个文本文件里.你可以修改: login=false 用户不能登录系统 rlogin=false 用户不能从远程 ...

  6. 内容中断随想录(risc cpu的那些事)

    发一下牢骚和主题无关: [ 声明:版权所有,欢送转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 从消费电子的soc芯片来讲,当初海内从事芯片设计的企业还是很多的,这其 ...

  7. 你可能把A/B测试做错了

    大卫奥格威说过,"永远不要停止试验,你的广告也就永远不会停止改进". 在当今的网络世界中,类似于吆喝科技 AppAdhoc A/B Testing 这样的工具越来越多,AB测试和转 ...

  8. 【Zookeeper】源码分析之Watcher机制(一)

    一.前言 前面已经分析了Zookeeper持久话相关的类,下面接着分析Zookeeper中的Watcher机制所涉及到的类. 二.总体框图 对于Watcher机制而言,主要涉及的类主要如下. 说明: ...

  9. 电脑自动重启(Kernel-Power 41 (63) error)的一些解决办法

    查看是否有两个声卡驱动,如果有,尝试关闭其中一个. 可能是内存的问题,用memtest测试.如果有多于一个内存条,仅使用其中的一个试试. 更改电源设置,使机器工作在低耗状态. 更新所有驱动,尤其是主板 ...

  10. LR日志解析

    在录制和回放的时候,VU会分别把发生的事件记录成日志文件,这些日志有利于我们跟踪VU和服务器的交互过程. 1.回放日志(Replay log) 脚本回放运行时的输出都记在这个log里. "输 ...