Javascript:计算给定年份的月数

Abe*_*Abe 11 javascript date datepicker leap-year drop-down-menu

我有一个HTML页面,包含月份,日期和年份的3个下拉列表,我想知道是否有办法根据月份和年份正确填充月份下拉列表.

我之前没有在客户端做过这个,但看起来像jQuery DatePicker这样的很多控件都是在幕后做的.

Mat*_*nen 27

据我所知,没有(整洁的)内置功能.我曾写过一次:

// note that month is 0-based, like in the Date object. Adjust if necessary.
function getNumberOfDays(year, month) {
    var isLeap = ((year % 4) == 0 && ((year % 100) != 0 || (year % 400) == 0));
    return [31, (isLeap ? 29 : 28), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month];
}
Run Code Online (Sandbox Code Playgroud)


SLa*_*aks 18

您可以使用日期对象:

var monthStart = new Date(year, month, 1);
var monthEnd = new Date(year, month + 1, 1);
var monthLength = (monthEnd - monthStart) / (1000 * 60 * 60 * 24)
Run Code Online (Sandbox Code Playgroud)

Date对象的算术给出了几毫秒.

这甚至适用于12月; Date构造函数通过环绕处理超出范围的参数.

请注意,它month是从零开始的(必须介于0和之间11)

  • 我把它包装成`var DaysInMonth = function(年,月){/*SLAK的代码在这里*/; return monthLength;};`并进一步将原型方法添加到Date`Date.prototype.daysInMonth = function(){var mlen = DaysInMonth(this.getFullYear(),this.getMonth()); 回来了 我可以调用`(new DateTime(2000,1)).daysInMonth();` (2认同)