如何在jQuery-Javascript中填充一个月数数组

How to Populate An Array of Month Number In jQuery - Javascript

本文关键字:一个 数组 数数 jQuery-Javascript 填充      更新时间:2023-09-26

你能看看这个演示吗?让我知道我如何在jQuery或JavaScript中动态填充当前年份的每个月的数字?

var monthNames = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
var daysInMonth = [];
var d = new Date();
var n = d.getMonth();
for (var i = 0; i < monthNames.length; i++) {
    daysInMonth.push(d.getMonth());
}
console.log(daysInMonth);
var monthNames = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
var daysInMonth = [];
for (var i = 0; i < monthNames.length; i++) {
    var year = 2014;
    var month = new Date(monthNames[i] + " 01 "+ year).getMonth() + 1;
    daysInMonth.push(new Date(year, month, 0).getDate());
}
console.log(daysInMonth);

演示http://jsfiddle.net/0mj2cxmt/7/

@Sam Battat的答案也有效,但对于一段在任何年份都有效的简单代码片段,当被调用时,您可以尝试以下方法:

var thisDay = new Date();
var thisYear = thisDay.getYear();
var feb29th = new Date(thisYear, 1, 29);
var febDays = ((feb29th.getMonth() === 1) ? 29 : 28);
var dayCounts = [31,febDays,31,30,31,30,31,31,30,31,30,31];

注:

  • 除二月外,所有月份的天数都是硬编码的,因为它们不会改变
  • 上面的feb29th变量在没有29天的年份(例如非闰年)实际上将变为3月1日,因此月份不会是"1"。。。将天数默认为28

更新

运行此性能测试后http://jsperf.com/leap-year-check很明显,对闰年表现的"巧妙"检查远不如基本的数学检查。

因此,我认为这会更有效率。

var thisDay = new Date();
var thisYear = thisDay.getYear();
var febDays = 28;
if((thisYear % 4 == 0) && (thisYear % 100 != 0) || (thisYear % 400 == 0)){
  febDays = 29;
}
var dayCounts = [31,febDays,31,30,31,30,31,31,30,31,30,31];