C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#のDateTime.IsLeapYear()メソッドでうるう年を判定する方法

C#のDateTime.IsLeapYear()メソッドは、指定された年がうるう年(閏年)かどうかを判定するための静的メソッドです。戻り値はbool型で、引数に渡した年がうるう年であればtrue、そうでなければfalseが返されます。

日付処理を行うアプリケーションでは、2月29日の存在確認やカレンダー生成などの場面で、このメソッドが役立ちます。

構文(Syntax)

DateTime.IsLeapYear()メソッドの構文は以下のとおりです。

public static bool IsLeapYear (int y);

パラメータ y には、判定対象となる年を整数値で指定します。例えば、2010、2016、2019などの値です。なお、指定できる年の範囲は1〜9999である点に注意してください。

使用例1:通常の判定

まずは基本的な使い方として、DateTime.IsLeapYear()メソッドを使って特定の年がうるう年かどうかを判定するサンプルを見てみましょう。

using System;
public class Demo {
    public static void Main() {
        int year = 2019;
        Console.WriteLine("Year = "+year);
        if (DateTime.IsLeapYear(year)){
            Console.WriteLine("Leap Year!");
        } else {
            Console.WriteLine("Not a Leap Year!");
        }
    }
}

出力結果

上記のコードを実行すると、次のような出力が得られます。2019年は4で割り切れても100で割り切れるため、うるう年ではないと判定されます。

Year = 2019
Not a Leap Year!

使用例2:範囲外の年を指定した場合

続いて、有効範囲外の年を指定した場合の動作を確認してみましょう。ここでは、9999を超える値「101910」を引数として渡します。

using System;
public class Demo {
    public static void Main() {
        int year = 101910;
        Console.WriteLine("Year = "+year);
        if (DateTime.IsLeapYear(year)){
            Console.WriteLine("Leap Year!");
        } else {
            Console.WriteLine("Not a Leap Year!");
        }
    }
}

出力結果(例外の発生)

このコードを実行すると、実行時例外が発生します。DateTime.IsLeapYear()メソッドは1〜9999以外の年を受け付けないため、ArgumentOutOfRangeExceptionがスローされ、スタックトレースに以下のエラーが出力されます。

Year = 101910
Run-time exception (line 11): Year must be between 1 and 9999.
Parameter name: year
Stack Trace:
[System.ArgumentOutOfRangeException: Year must be between 1 and 9999.
Parameter name: year]
at System.DateTime.IsLeapYear(Int32 year) at Demo.Main() :line 11

まとめ

DateTime.IsLeapYear()メソッドを使えば、うるう年の複雑な判定ルール(4で割り切れ、かつ100で割り切れない、または400で割り切れる年)を意識することなく、簡単に判定できます。ただし、引数には必ず1〜9999の範囲内の年を指定してください。範囲外の値を渡すとArgumentOutOfRangeExceptionが発生するため、ユーザー入力などを扱う場合は事前に値の検証を行うことをおすすめします。

  1. C#のDateTime.AddHours()メソッドの使い方を徹底解説

    C#のDateTime.AddHours()メソッドは、指定した時間数を現在のDateTimeインスタンスの値に加算するためのメソッドです。重要なポイントとして、このメソッドは元のDateTimeオブジェクトを変更せず、計算結果を含む新しいDateTimeオブジェクトを返します。基本仕様DateTimeは不変(イミュータブル)な構造体のため、AddHours()を呼び出しても元の値は変わりません。戻り値は加算後の日時を持つ新しいDateTimeです。構文public DateTime AddHours (double hrs);パラメータ hrs には加算する時間数を指定します。負の値を渡すこ

  2. C#のDateTime.AddDays()メソッドの使い方を徹底解説!日付に日数を加算する方法

    C#のDateTime.AddDays()メソッドは、現在のDateTimeインスタンスの値に指定した日数を加算するためのメソッドです。このメソッドは元のDateTimeオブジェクトを変更するのではなく、計算結果として新しいDateTimeオブジェクトを返します。そのため、戻り値を受け取る変数が必要になる点に注意しましょう。 基本構文 DateTime.AddDays()メソッドの構文は以下のとおりです。 public DateTime AddDays (double days); 引数 days には加算したい日数をdouble型で指定します。負の値を渡すことで、日付を減算(過去の日付に移動