我尝试将天/月/年添加到给定日期并将其映射到输入字段
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 ..
关于这里出了什么问题的任何建议..对此有什么选择吗?
答案 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
date
以0 - 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