Perlゼミ

  1. Perl
  2. 日付・時刻

閏年(うるうどし)かどうかを判定する

閏年の判定方法は以下のようになります。

まず、4で割り切れるかどうかを判定します。4で割り切れるということが閏年であることの必要条件です。4で割り切れなければ閏年ではありません。

閏年(うるう年)かどうかを判定するサンプルです。
use strict;
use warnings;

# 1900年は閏年でない、2000年は閏年、2003は閏年でない、2004年は閏年。
print "(1)閏年の判定を行う。\n";
my @years = (1900, 2000, 2003, 2004); 

for my $year (@years) {
  if (is_leap_year($year)) {
    print "$year年は閏年です。\n";
  }
  else {
    print "$year年は閏年ではありません。\n";
  }
}

# 閏年を判定する関数。
sub is_leap_year {
  my $year = shift;

  # 4で割り切れなければ閏年ではない。
  return if $year % 4; 

  # 100で割り切れ、かつ400で割り切れなければ
  # 閏年ではない。
  return if !( $year % 100 ) && ( $year % 400 );

  # それ以外は閏年。
  return 1;
}

閏年(うるう年)かどうかを判定する。

閏年の判定方法は以下のようになります。

まず、4で割り切れるかどうかを判定します。4で割り切れるということが閏年であることの必要条件です。4で割り切れなければ閏年ではありません。

return if $year % 4; 

上記の判定で4で割り切れたものだけが残されます。サンプルの例でいうと ( 1900, 2000, 2003, 2004 ) のうち、( 1900, 2000, 2004 ) が残ります。

次に「100で割り切れてかつ400で割り切れない」という判定をします。この条件に合致するものは閏年ではありません。この条件に合致するのは1900です。

return if !( $year % 100 ) && ( $year % 400 );

上記の判定で、( 2000, 2004 )が残ります。これらが閏年です。

Perlの書籍
  • 業務に役立つPerl

    ログ解析など日本語を含むテキスト処理の実践!
    この私、Perlゼミの作者が執筆しています。
    ご購入、口コミ歓迎。
  • Perlの書籍 »
自己紹介
木本裕紀

「今日も元気だ、Perlで元気。
ゆとりあるITエンジニアライフのために
Perl情報を前向きに発信中!」

Twitter
フォロー、いいね、リツート、コメント歓迎

Youtube

チャンネル登録、いいね、コメント歓迎

kimoto.yuki@gmail.com
応援メッセージ、質問、間違い報告歓迎

木本システム株式会社
ご紹介キャンペーン実施中です。契約金額の10%をご紹介料としてお支払い。

(例)30万円のシステム開発委託契約が、1年続いたら、36万円がもらえる!!!