count-days-in-month
Version:
Get the number of days in a given month
43 lines (33 loc) • 1.42 kB
JavaScript
/*!
* count-days-in-month | MIT (c) Shinnosuke Watanabe
* https://github.com/shinnn/count-days-in-month
*/
import isNaturalNumber from 'is-natural-number';
var EXPECTED_YEAR_ARG = ' Expected a number of full year, for example `2016`.';
var EXPECTED_MONTH_ARG = ' Expected a zero-based number of month (0-11).';
export default function countDaysInMonth(fullYear, zeroBasedMonth) {
if (typeof fullYear !== 'number') {
throw new TypeError(String(fullYear) + ' is not a number.' + EXPECTED_YEAR_ARG);
}
if (!isNaturalNumber(fullYear, {includeZero: true})) {
throw new RangeError(String(fullYear) + ' is a number, but not a natural number.' + EXPECTED_YEAR_ARG);
}
if (typeof zeroBasedMonth !== 'number') {
throw new TypeError(String(zeroBasedMonth) + ' is not a number.' + EXPECTED_MONTH_ARG);
}
if (!isNaturalNumber(zeroBasedMonth, {includeZero: true})) {
throw new RangeError(String(zeroBasedMonth) + ' is a number, but not a natural number.' + EXPECTED_MONTH_ARG);
}
if (zeroBasedMonth > 11) {
throw new RangeError(String(zeroBasedMonth) + ' is larger than 11.' + EXPECTED_MONTH_ARG);
}
var date = new Date();
date.setFullYear(fullYear, zeroBasedMonth + 1, 0);
if (isNaN(date.getTime())) {
throw new RangeError(
String(fullYear) +
' is too large for JavaScript year. Expected a valid number of full year.'
);
}
return date.getDate();
}