端くれプログラマの備忘録 C# [C#] 開始年月日と終了年月日を指定して、その間のランダムな日付を取得する

[C#] 開始年月日と終了年月日を指定して、その間のランダムな日付を取得する

C#で開始年月日と終了年月日を指定して、その間のランダムな日付を取得するには、Randomクラスを使い、日時を表すDateTime型の範囲内でランダムな値を生成する方法が一般的です。

以下はその実装例です。


実装例

using System;

class Program
{
    static void Main()
    {
        // 開始日と終了日を指定
        DateTime startDate = new DateTime(2023, 1, 1);
        DateTime endDate = new DateTime(2023, 12, 31);

        // ランダムな日付を生成
        DateTime randomDate = GetRandomDate(startDate, endDate);

        Console.WriteLine($"ランダムな日付: {randomDate:yyyy-MM-dd}");
    }

    static DateTime GetRandomDate(DateTime startDate, DateTime endDate)
    {
        // ランダムオブジェクトを生成
        Random random = new Random();

        // 開始日から終了日までの日数を計算
        int range = (endDate - startDate).Days;

        // 開始日からランダムな日数を追加
        return startDate.AddDays(random.Next(range + 1));
    }
}

解説

1. startDateendDate の指定:

    • 日付の範囲をDateTime型で指定します。

    2. 日数の範囲を計算:

      • (endDate - startDate).Days を使って開始日から終了日までの範囲の日数を取得します。

      3. ランダムな日付の生成:

        • random.Next(range + 1) で範囲内のランダムな整数(日数)を生成します。
        • startDate.AddDays(...) を使い、ランダムな日数を開始日に加えて日付を取得します。

        4. Random の使用:

          • Randomクラスをインスタンス化してランダムな値を生成します。

          実行例

          • 入力: startDate = 2023-01-01, endDate = 2023-12-31
          • 出力: ランダムな日付: 2023-07-15(毎回異なる日付が生成されます)

          このコードを使うと、任意の日付範囲内でランダムな日付を簡単に取得できます。