一个有用的 Datetime 包 | 判断是否为闰年,Javascript

在看《Javascript 实战》的时候,第三章讲的是如何创建包,里面有一个 datetime 包,提供了两个方法,一个是判断某年是否为闰年,一个判断某年某月有多少天,而且考虑了闰年的情况,来看看源码:

/**
 * jscript.datetime package
 * This package contains utility functions for working with dates and times.
 */
 /*命名空间*/
if (typeof jscript == 'undefined') {
  jscript = function() { }
}

jscript.datetime = function() { }

/**
 * This function will return the number of days in a given month and year,
 * taking leap years into account.(这个函数返回所给某年、某月的天数,并且考虑了闰年的情况)
 *
 * @param  inMonth The month, where January = 1 and December = 12.
 * @param  inYear  The year to check the month in.
 * @return         The number of days in the specified month and year.
 */
jscript.datetime.getNumberDaysInMonth = function(inMonth, inYear) {

  inMonth = inMonth - 1;
  var leap_year = this.isLeapYear(inYear);
  if (leap_year) {
    leap_year = 1;
  } else {
    leap_year = 0;
  }
  /*4, 6, 9, 11 月为 30 天,注意上面的 inMonth = inMonth - 1*/
  if (inMonth == 3 || inMonth == 5 || inMonth == 8 || inMonth == 10) {
    return 30;
  } else if (inMonth == 1) {/*2 月为 28 或者 29 天,视是否为闰年而定*/
    return 28 + leap_year;
  } else {/*其它月则为 31 天*/
    return 31;
  }

} // End getNumberDaysInMonth().


/**
 * This function will determine if a given year is a leap year.
 *(这个函数用来确定是否为闰年)
 * @param  inYear The year to check.
 * @return        True if inYear is a leap year, false if not.
 */
jscript.datetime.isLeapYear = function(inYear) {

  if ((inYear % 4 == 0 && !(inYear % 100 == 0)) || inYear % 400 == 0) {
    return true;
  } else {
    return false;
  }

} // End isLeapYear().