1. ホーム
  2. c#

C#で2つの'DateTime'の間のすべてのDateTimeを取得する

2023-09-10 03:01:47

質問

私は、2つの DateTime があり、すべての DateTime を取得したい。例えば、私の日付が2010年1月1日から2010年1月5日のような場合、私の関数は日付のリスト(リスト)を返す必要があり、それは2010年1月1日、2010年2月1日、2010年3月1日、2010年4月1日、2010年1月5日を含んでいなければなりません。

私はこのような関数を書きました。これは、日付が月である場合は正常に動作します。日付が2010年1月1日~2010年2月5日のような場合、うまくいきません。なぜなら、月が変わってしまい、私の関数がそれを処理できないからです。C#には、2つの日付の間のすべての日付を返す関数はありますか?または、どのように私は月の変更を処理することができますか?

public void GetAllDatesAndInitializeTickets(DateTime startingDate, DateTime endingDate)
    {
        List<DateTime> allDates = new List<DateTime>();

        int starting = startingDate.Day;
        int ending = endingDate.Day;

        for (int i = starting; i <= ending; i++)
        {
            allDates.Add(new DateTime(startingDate.Year, startingDate.Month, i));
        }

疑問は解決、Tim Robinsonのシンプルな回答で使用方法を確認。

どのように解決するのですか?

この場合 DateTime オブジェクトをループ内で直接使用することができます。 int . DateTime.AddDays は月末締めを正しく処理します。

for (DateTime date = startingDate; date <= endingDate; date = date.AddDays(1))
    allDates.Add(date);