在看《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().