很抱歉,前面发过类似的帖子还要求助。回到正题,我想要给某一日期加一,代码如下,可是得出的结果却是年份变了,日子变为今天。比如原日期为2009/8/6,现在的结果却是2006/8/14。
现在的初始值如下:
date_begin = 2009/8/6 即标准日期格式。
ii 分别为0,1date_temp = new Date(date_begin.getFullYear(),date_begin.getMonth(),date_begin.getDate()+ii);date_temp最后结果:
当ii = 0时,date_temp = 2006/8/14
当ii = 1时,date_temp = 2007/8/14另外我用毫秒的方式也算过了,也是一样的结果,代码如下:
date_temp = new Date(date_begin.valueOf()+86400000*ii)请问我的代码哪里有错误,谢谢!

解决方案 »

  1.   

    用m/d/y的格式直接new Date再加方便操作/**
    *
    * d -- m/d/y formatted
    *add -- days going to add
    */
    function addDay(d,add)
    {
    var a = new Date(d);
    a = a.valueOf();
    a = a + add * 24 * 60 * 60 * 1000;
    a = new Date(a);
    var mon = a.getMonth()+1;
    var day = a.getDate();
    mon = mon.toString().length == 1 ? '0'+mon : mon;
    day = day.toString().length == 1 ? '0'+day : day;
    return a.getFullYear() + "-" + mon + "-" + day;
    }
    alert(addDay('8/6/2009',1));
      

  2.   

    <script>
    var s="2009/8/6 ";
    var d=new Date(s);var d2=new Date(d.getFullYear(),d.getMonth(),d.getDate()+1);
    alert(d2);
    </script>
      

  3.   

    new Date(d.getFullYear(),d.getMonth(),d.getDate()+1); 
      

  4.   

    2楼忘记转常用格式了
    <script>
    var date_begin="2009/8/6 ";
    var d=new Date(date_begin);
    var d2=new Date(d.getFullYear(),d.getMonth(),d.getDate()+1);
    var yourDate=d2.getFullYear()+"/"+(d2.getMonth()+1)+"/"+d2.getDate()
    alert(yourDate);
    </script>
      

  5.   

    红字是你的错误,date_begin是字串,你没格式化为时间
    date_temp = new Date(date_begin.getFullYear(),date_begin.getMonth(),date_begin.getDate()+ii); 
      

  6.   

    lz 把完整代码粘贴出来吧下面代码问题滴
    L@_@K
    var date_begin = new Date("2009/8/6");
    var ii = 1;
    var date_temp = new Date(date_begin.getFullYear(),date_begin.getMonth(),date_begin.getDate()+ii);document.write(date_temp.toLocaleDateString()); //2009年8月7日
      

  7.   

    date_begin是一个全局变量,之前初始化为Date格式了,我对js不了解,冒昧的问一句,js全局变量没有类型?要是雷到各位请谅解 :(
      

  8.   

    全局初始化代码:
    date_begin = date_begin.replace(/-/g,"/");
    date_end = date_end.replace(/-/g,"/");

    date_begin = new Date(date_begin);
    date_end = new Date(date_end);
    循环内代码: document.getElementById("node_time_detail_addNew").click();
    date_temp = new Date(date_begin.getFullYear(),date_begin.getMonth(),date_begin.getDate()+ii);
    row = form_place_node_time.gridRows.get(i);    
    request = row.getRecord();
    form_place_node_time_two.setFieldValue("t_place_node_time_detail.place_id",place_id);
    form_place_node_time_two.setFieldValue("t_place_node_time_detail.node_id",request.getValue('t_place_node_time.node_id'));
    form_place_node_time_two.setFieldValue("t_place_node_time_detail.duty_time_id",request.getValue('t_place_node_time.duty_time_id'));
    form_place_node_time_two.setFieldValue("t_place_node_time_detail.time_detail_id",i+"--"+ii);

    form_place_node_time_two.setFieldValue("t_place_node_time_detail.time_detail_date",date_temp);
    form_place_node_time_two.setFieldValue("t_place_node_time_detail.date_begin",form_date_time.getFieldValue('t_date_time.date_begin'));
    form_place_node_time_two.setFieldValue("t_place_node_time_detail.date_end",form_date_time.getFieldValue('t_date_time.date_end'));
    document.getElementById("saveForm").click();
      

  9.   

    没什么,大家都有起步的时候
    <script>
    var date_begin="2009-8-6";//字串
    date_begin=date_begin.replace(/-/g,"/");//替换后的字串
    alert(typeof date_begin)//显示一下变量类型
    date_begin = new Date(date_begin);//格式化为时间对象
    alert(typeof date_begin)//显示一下转换结果
    var d2=new Date(date_begin.getFullYear(),date_begin.getMonth(),date_begin.getDate()+1);
    var yourDate=d2.getFullYear()+"/"+(d2.getMonth()+1)+"/"+d2.getDate()
    alert(yourDate);
    </script>
      

  10.   

    试出来了,是平台的setFieldValue的bug……