簡體   English   中英

JavaScript 如何使用 getDate() 修復一個月中的獲取天數?

[英]JavaScript how to fix getting days in a month using getDate()?

我正在創建一個日歷,它會自動顯示您想要的任何月份並將其顯示在表格中。 出於某種原因,當我在 JavaScript 部分使用 getDate() 來獲取當月有多少天時,這是不正確的。 這是一個例子。

對於獲取當月天數的代碼,我正在這樣做。

var DaysInMonth = new Date(Year, Month, 0).getDate();

對於 2017 年 1 月,它表示該月有 31 天。 哪個是正確的。 現在,如果我們再次單擊該按鈕,它將轉到二月,但它顯示該月有 31 天。 讓我們試試三月。 現在它說三月有 28 天。 如果我們再次點擊它,它會說四月有 31 天。

正如你所看到的,它變得非常奇怪。 我不太確定我做錯了什么/哪里搞砸了。 這是所有代碼的鏈接。

http://www.w3schools.com/code/tryit.asp?filename=FBNGPFXV841A

 var Month = 0; var Month1 = -1; var Year = 2017; function NextMonth() { Month = Month + 1; Month1 = Month1 + 1; if (Month == 1) { document.getElementById("MonthTitle").innerHTML = "January " + Year; } else if (Month == 2) { document.getElementById("MonthTitle").innerHTML = "February " + Year; } else if (Month == 3) { document.getElementById("MonthTitle").innerHTML = "March " + Year; } else if (Month == 4) { document.getElementById("MonthTitle").innerHTML = "April " + Year; } else if (Month == 5) { document.getElementById("MonthTitle").innerHTML = "May " + Year; } else if (Month == 6) { document.getElementById("MonthTitle").innerHTML = "June " + Year; } else if (Month == 7) { document.getElementById("MonthTitle").innerHTML = "July " + Year; } else if (Month == 8) { document.getElementById("MonthTitle").innerHTML = "August " + Year; } else if (Month == 9) { document.getElementById("MonthTitle").innerHTML = "September " + Year; } else if (Month == 10) { document.getElementById("MonthTitle").innerHTML = "October " + Year; } else if (Month == 11) { document.getElementById("MonthTitle").innerHTML = "November " + Year; } else if (Month == 12) { document.getElementById("MonthTitle").innerHTML = "December " + Year; } else if (Month == 13) { Month = 1; Year = Year + 1; document.getElementById("MonthTitle").innerHTML = "January " + Year; } var RowNum = 0; var RowID = 10; var TotalNum = 0; while (TotalNum < 35) { TotalNum = TotalNum + 1; RowNum = RowNum + 1; if (RowNum == 8) { RowNum = 1; RowID = RowID + 10; } document.getElementById(RowID + RowNum).innerHTML = "&nbsp;"; } var ID = 11; var Current = 1; var WeekNum = 0; var DaysInMonth = new Date(Year, Month1, 0).getDate(); var WeekDay = new Date(Year, Month1, Current).getDay(); document.getElementById("MonthTitle").innerHTML = DaysInMonth + " " + WeekDay + " " + Month1; WeekNum = WeekDay; document.getElementById(ID + WeekDay).innerHTML = Current; while (Current < DaysInMonth) { Current = Current + 1; WeekNum = WeekNum + 1; if (WeekNum == 7) { WeekNum = 0; ID = ID + 10; } var WeekDay1 = new Date(Year, Month1, Current).getDay(); document.getElementById(ID + WeekDay1).innerHTML = Current; } } function PrevMonth() { Month = Month - 1; }
 td { vertical-align: top; width: 100px; height: 80px; } th { width: 100px; height: 25px; } #ButtonAlign { text-align: center; padding-top: 10px; }
 <table border="1px solid black" style="border-collapse:collapse;width:80%" align="center"> <caption id="MonthTitle" style="font-size: 50px;padding-bottom: 10px">January 2017</caption> <tr> <th>Sunday</th> <th>Monday</th> <th>Tuesday</th> <th>Wednesday</th> <th>Thursday</th> <th>Friday</th> <th>Saturday</th> </tr> <tr> <td id="11">1</td> <td id="12">2</td> <td id="13">3</td> <td id="14">4</td> <td id="15">5</td> <td id="16">6</td> <td id="17">7</td> </tr> <tr> <td id="21">8</td> <td id="22">9</td> <td id="23">10</td> <td id="24">11</td> <td id="25">12</td> <td id="26">13</td> <td id="27">14</td> </tr> <tr> <td id="31">15</td> <td id="32">16</td> <td id="33">17</td> <td id="34">18</td> <td id="35">19</td> <td id="36">20</td> <td id="37">21</td> </tr> <tr> <td id="41">22</td> <td id="42">23</td> <td id="43">24</td> <td id="44">25</td> <td id="45">26</td> <td id="46">27</td> <td id="47">28</td> </tr> <tr> <td id="51">29</td> <td id="52">30</td> <td id="53">31</td> <td id="54">&nbsp;</td> <td id="55">&nbsp;</td> <td id="56">&nbsp;</td> <td id="57">&nbsp;</td> </tr> </table> <div id="ButtonAlign"> <button type="button" onclick="NextMonth()" style="width: 125px">Next Month</button> <button type="button" onclick="PrevMonth()" style="width: 125px">Previous Month</button> </div>

*此外,當您單擊按鈕時,它會將月份標題更改為 3 個數字。 第一個是一個月有多少天。 第二個是月份開始的工作日(0-6)。 最后是哪個月份(0-11)。

var DaysInMonth = new Date(Year, Month, 0).getDate(); 為您提供上個月的天數(其中月份從 0 到 11)。 即對於二月,您應該將其稱為var DaysInMonth = new Date(2017, 2, 0).getDate(); .

根據您的結果,您將其稱為二月,例如var DaysInMonth = new Date(2017, 1, 0).getDate(); . 所以你可以像這樣修復你的代碼

var DaysInMonth = new Date(Year, Month + 1, 0).getDate();

PS:另請參閱使用javascript確定一個月中天數的最佳方法是什么?

在 Javascript 中,getMonth() 值是從 0-11,看起來您將一月編碼為 1。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM