37 lines
791 B
JavaScript
37 lines
791 B
JavaScript
/*
|
|
閏年判定
|
|
|
|
引数
|
|
1: date or number
|
|
返り値
|
|
boolean
|
|
|
|
参考
|
|
[うるう年とは - はてなキーワード](http://d.hatena.ne.jp/keyword/%A4%A6%A4%EB%A4%A6%C7%AF)
|
|
*/
|
|
import isNumber from './is-number.mjs';
|
|
import isDate from './is-date.mjs';
|
|
|
|
function isLeapYear(arg){
|
|
if( isNumber(arg) ){
|
|
return isLeapYear_number(arg)
|
|
}else if( isDate(arg) ){
|
|
return isLeapYear_date(arg);
|
|
}else{
|
|
throw new TypeError(`Invalid arguments: ${arg}`);
|
|
}
|
|
}
|
|
|
|
// dateインスタンス用
|
|
function isLeapYear_date(date){
|
|
const year = date.getFullYear();
|
|
return isLeapYear_number(year);
|
|
}
|
|
|
|
// 数値(年)用、本体
|
|
function isLeapYear_number(year){
|
|
return year % 4 === 0 && (year % 100!==0 || year % 400===0);
|
|
}
|
|
|
|
export default isLeapYear;
|