ねぇもりさん、今日のお題は?
もり
うるう年を判定する関数を作ってみよう!
うるう年って4年に1度だよね?なんか簡単すぎない?
スポンサーリンク
Contents
うるう年とは?
もり
まずは「うるう年」の定義を確認しよう!
(1)西暦年号が4で割り切れる年をうるう年とする。
(2)(1)の例外として、西暦年号が100で割り切れて400で割り切れない年は平年とする。
例えば、このようになります。
- 1900年=平年(100で割り切れるが、400で割り切れない)
- 2000年=うるう年(400で割り切れる)
- 2016年=うるう年(4で割り切れる)
- 2100年=平年(100で割り切れるが、400で割り切れない)
うるう年の条件を整理してみよう
(1)西暦年号が4で割り切れる年をうるう年とする
もり
これは大丈夫そうかな?
「4で割り切れる=4の倍数」は「うるう年」だね。図にするとこうなるよ
(2)西暦年号が100で割り切れて400で割り切れない年は平年とする
これ、ややこしいなぁ~
「100で割り切れて400で割り切れない数字」とは「100の倍数であるが、400の倍数ではない数字」です。これが「平年」になります。
もり
図にすると、みどり色の部分が「平年」だね。白い円は何になるかわかるかな?
あれっ?そういえば400の倍数って、4の倍数だよね?
400の倍数→400、800、1200、1600…は4の倍数です。
(1)の条件によると、4の倍数は「うるう年」なので、400の倍数も「うるう年」ですね。図にするとこうなります。
ふむふむ、なるほどねぇ~
(3)2つの条件を合体させる
もり
はい、あと一歩だよ~。(1)(2)の条件を合体させてみるよ
100の倍数は、4の倍数でもあるよね
(1)の「4の倍数」の「水色の円」のなかに、(2)の円を入れ込めばOKです。
ここまできたら、大きい数字から順番に、if~elseを使って①~④を判定します
- もし400で割り切れたら「うるう年」
- もし100で割り切れたら「平年」
- もし4で割り切れたら「うるう年」
- その他「平年」
「割り切れるか?」の確認は、「割り算のあまりがゼロであるか」で判定しましょう。
【スクリプトまとめ】GASでうるう年を判定する
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
function main(){ var y = 2018; Logger.log(y + '年は' + isLeapYear(y) + 'です'); } function isLeapYear(y) { if (y % 400 === 0){ Leap = 'うるう年' }else if(y % 100 === 0){ Leap = '平年'; }else if(y % 4 === 0){ Leap = 'うるう年'; }else{ Leap = '平年'; } return Leap; } |
もり
はい、よくできました~!
GASの情報ってネット記事は色々読んでるんだけど、もっと体系的に勉強できる良い本ないかぁ〜?
もり
それならこの本がオススメだね!私もこれで勉強してるよ
スポンサーリンク
スポンサーリンク