2011-06-24 69 views
0

我想天/月/年添加到給定日期和映射它來輸入字段使用javascript在給定日期添加日/月/年的問題?

 

     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

如果你認爲這臺日期'15.06.2011 '然後你增加20天...... 5月的天數對你的計算有什麼影響? –

+0

對不起,我提到它錯了..更新了它 – balanv

+0

我看到:D NVM然後... –

回答

0

首先,你最好使用getFullYear來取得2011年的年份。你確實從getDate()獲得了數字並且添加了20.這個break Date。您應該從getTime()中獲得長時間的值,並添加毫秒。

<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> 
+0

我得到以下輸出15/6/2011 4/7/2011 ...但這也是錯誤的..它應該是15/6/2011 5/7/2011 – balanv

+0

@balanv - 只需在月份添加+1,就能正確理解。:) – niksvp

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.

您與0 - Jan解釋它錯誤的方式,在date開始Month .. 所以按照您所輸入的日期它的月數6Jul 15 2011

當您添加20日期時,它將是Aug 04 2011,並且您直接獲取的月份編號是7 - i.e. Aug,這會誤導您的計算。而在今年,是的,它是你應該getFullYear

this,讓您的基本正確的..

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

等同於:

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

月份是基於零(一月= 0 ,十二月= 11)。

Date.prototype.getYear在ECMA-262指定ED5爲Return YearFromTime(LocalTime(t)) − 1900.這樣:

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

而:

alert(d.getFullYear()); // 2011 
相關問題