2012-01-17 16 views
1

JavaScriptを使用して月を取得しようとしていて、問題が発生しています。私は現在、hereというソリューションを使用しています。JavaScriptを使用して月に日を取得する:問題

はここに私のコードです:

function getDays(month,year){ 

    if(month=="" || year==""|| year=="--Select--"){ 

     document. getElementById("days"). innerHTML =""; 
     return; 
    } 

    var months= new Array(); 
    alert("Month in Function"+month);// To test. 
    alert("Year in function"+year); 
    months[0]="January"; 
    months[1]="February"; 
    months[2]="March"; 
    months[3]="April"; 
    months[4]="May"; 
    months[5]="June"; 
    months[6]="July"; 
    months[7]="August"; 
    months[8]="September"; 
    months[9]="October"; 
    months[10]="November"; 
    months[11]="December"; 
    var index=months.indexOf(month); 
    alert("Index used"+index); 
     var datebase = new Date(year,index,1); //nb: month = zerobased 
     datebase.setDate(datebase.getDate()-1); 

      // Also tried database=new Date(year, index, 0).getDate(); 


    document.getElementById("days").innerHTML =datebase.getDate();// This value is skewed. 

} 

私は例えば月の日奇妙な値を取得し、2012年4月31日私を与え、2011年3月28日私を与えます。私がここでうんざりしていることの助けがあれば助けになるでしょう。

答えて

2

new Date(year,index,1)を使用して日付を作成しています。 "March"に合格すれば3月1日。その後、1日を減算して2月28日を取得します。次に、の3月には28日間と言われています。これは明らかに間違った結論です。

あなたは使用して構築する必要があるでしょう:

new Date(year, index + 1, 1); 
// so, build e.g. 1 April when "March" is passed, then 
// subtract one to get last day of March 
1

数ヶ月前、私は同じことをしなければならない - 月が指定された年で持っているの日数を取得します。多くの解決策がありますが、私が思うにこれは最短で最善のものです。 12月

  • 年 - - - これが0に 1月と11を示し、0から11までの整数値であり、年
    1. 月:

      function DaysInMonth(Month,Year){ 
          return (32-new Date(Year,Month,32).getDate());  
      } 
      

      関数は、2つのパラメータがあります

      それを試してみてください。

      DaysInMonth(1,2012) 
          DaysInMonth(2,2012) 
      
    関連する問題