论坛首页 Web前端技术论坛

这难道是Javascript的一个BUG(日期处理)

浏览 9488 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (10) :: 隐藏帖 (1)
作者 正文
   发表时间:2009-10-05  
//dateObj是一个日期对象,days表示给这个日期加多少天,比如说4,5(天)
function dateAdd(dateObj,days){
      var tempDate = dateObj.valueOf();
      tempDate = tempDate + days * 24 * 60 * 60 * 1000;
      tempDate = new Date(tempDate);
      return tempDate;
  }

//然后使用,创建一个日期对象
var dateValue = document.getElementById("XXYY").value.split("-");
var custArvDateTwoValue = new Date(dateValue[0],dateValue[1]-1,dateValue[2]);
//调用dateAdd,加两天
custArvDateTwoValue = dateAdd(custArvDateTwoValue,2);
var year = custArvDateTwoValue.getFullYear();
var month = custArvDateTwoValue.getMonth() + 1;
var days = custArvDateTwoValue.getDate();
month = month <= 9 ? "0"+month : month;
days = days <= 9 ? "0"+days : days;
document.getElementById("XX").value = year + "-" + month + "-" +days;


我在测试的时候发现,当document.getElementById("XXYY").value的值是2009-10-31
返回的居然是2009-11-01

其它情况都是正确的,比如说输入2009-10-01,返回2009-10-03
我还试了今天和明年的每个月最后一天,只有2009-10-31出问题(我试了很多时间,只有这个时间有问题,难度这个月有32天)

当我试2009-10-31,返回的是2009-11-01也是正确的


大家说一说这个是什么问题
   发表时间:2009-10-05  
试了FF3IE678ChromeOperaSafari都没有问题....楼主遇上灵异事件了?
0 请登录后投票
   发表时间:2009-10-06  
tiantianzzz 写道
试了FF3IE678ChromeOperaSafari都没有问题....楼主遇上灵异事件了?

真是遇到了。。。。
我家里面的机子就没有问题,到上班的地方就不行了。。。加的两天,结果只加了一天
0 请登录后投票
   发表时间:2009-10-06  
用VS2008简单调试了一下,感觉问题是在dateAdd函数中。

custArvDateTwoValue:Sat Oct 31 00:00:00 MDT 2009

运行dateAdd函数后

custArvDateTwoValue: Nov 1 23:00:00 MST 2009

感觉跟时区有关系。
0 请登录后投票
   发表时间:2009-10-06  
danielwcai 写道
用VS2008简单调试了一下,感觉问题是在dateAdd函数中。

custArvDateTwoValue:Sat Oct 31 00:00:00 MDT 2009

运行dateAdd函数后

custArvDateTwoValue: Nov 1 23:00:00 MST 2009

感觉跟时区有关系。

果然是时区的问题


我改成北京这边的时区就正常了
  • 大小: 46.2 KB
0 请登录后投票
   发表时间:2009-10-06  
2006, 夏令时从4月 2 号到 10月 29号.
2007, 夏令时从3月 11 号到11月4号(新法律延长夏令时)
2008, 夏令时从3月 9号 到11月2号
2009, 夏令时从3月 8 号到11月1号


就是夏令时的问题。。。总算解决了。。。
0 请登录后投票
   发表时间:2009-10-07  
客户端时间总是不准确的且不真实的
0 请登录后投票
   发表时间:2009-10-08   最后修改:2009-10-08
上次 我在java项目里也遇到了 吼吼 不过你那么快发现问题了 真不错呢
0 请登录后投票
   发表时间:2009-10-08  
whaosoft 写道
上次 我在java项目里也遇到了 吼吼 不过你那么快发现问题了 真不错呢

后来你是怎么解决的?
0 请登录后投票
   发表时间:2009-10-10  
呃,都牵扯到时区了啊,这个一时半会还真考虑不到~
0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics