使用javascript将天/月/年添加到给定日期的问题?

时间:2011-06-24 07:28:42

标签: javascript jquery

我尝试将天/月/年添加到给定日期并将其映射到输入字段

 
        var d = new Date();
        d.setDate(15);
        d.setMonth(06);
        d.setYear(2011);

        document.getElementById("test").innerHTML=d;

        d.setDate(d.getDate()+20);

        document.getElementById("test").innerHTML+="
"+d.getDate()+"/"+d.getMonth()+"/"+d.getYear("YY");

这实际上是打印出来的


Fri Jul 15 2011 12:45:48 GMT+0530 (India Standard Time)
4/7/111

实际上这是错误的..它应该打印出5/7/2011 ..我认为默认情况下系统一个月需要“30”天并且加上+20天..但实际上Jun有30天所以结果应该是5/7/2011 ..

关于这里出了什么问题的任何建议..对此有什么选择吗?

3 个答案:

答案 0 :(得分:0)

首先,你最好使用getFullYear来获得2011年的年份。你确实从getDate()获得了数字并添加了20.这个中断日期。你应该从getTime()获得long值,并添加milli-seconds。

<div id="test"></div>
<script>
    var d = new Date();
    d.setDate(15);
    d.setMonth(06);
    d.setFullYear(2011);
    document.getElementById("test").innerHTML+=" "+d.getDate()+"/"+d.getMonth()+"/"+d.getFullYear();
    d.setTime(d.getTime()+1000*60*60*24*20);
    document.getElementById("test").innerHTML+=" "+d.getDate()+"/"+d.getMonth()+"/"+d.getFullYear();
</script>

答案 1 :(得分:0)

i think by default the system takes as "30" days for a month and adds the +20 days.. but actually May has 31 days so that result should be 5/7/2011.

您正在以错误的方式解释它,Month date0 - Jan开头。 因此,根据您输入的日期,Jul 15 2011上显示月份编号6

当您向日期添加20时,它将为Aug 04 2011,您将直接获得误导您的计算的月份编号7 - i.e. Aug。对于这一年,是的,你应该getFullYear

阅读this以确保您的基础知识正确无误。

答案 2 :(得分:0)

>         var d = new Date();
>         d.setDate(15);
>         d.setMonth(06);
>         d.setYear(2011);

相当于:

  var d = new Date(2011,6,15); // 15 Jul 2011

月份为零(1月= 0,12月= 11)。

Date.prototype.getYear 在ECMA-262 ed5中指定为Return YearFromTime(LocalTime(t)) − 1900.,所以:

  alert(d.getYear()); // 111

,而:

  alert(d.getFullYear()); // 2011