-1

重複の可能性:
特定の範囲で欠落している日付を検索する
2 つの日付間のすべての日付の配列またはリストを作成する

aと a をDateTime表すデータ型の 2 つの日付から。date of startdate of end

すべての日付を DateTime 形式で含む配列またはリストを返す必要があります。

パフォーマンス上の理由から、より高速なコードを検討してください。サンプルソースコードで正しい方向に私を指摘してもらえますか?

入力

startDate =  25/01/2013
endDate = 31/01/2013

結果

25/01/2013
26/01/2013
27/01/2013
28/01/2013
29/01/2013
30/01/2013
31/01/2013
4

4 に答える 4

4

使用できますEnumerable.Range

var startDate = new DateTime(2013, 1, 25);
var endDate = new DateTime(2013, 1, 31);
int days = (endDate - startDate).Days + 1; // incl. endDate 

List<DateTime> range = Enumerable.Range(0, days)
    .Select(i => startDate.AddDays(i))
    .ToList();

デモ

于 2013-01-25T10:41:32.393 に答える
1

拡張メソッドを作成できます:

public static IEnumerable<DateTime> GetDatesTo(this DateTime start, DateTime end)
{
    DateTime date = start;

    while(date <= end)
    {
        yield return date;
        date = date.AddDays(1);
    }
}

使用法:

DateTime startDate = new DateTime(2013, 1, 25);
DateTime endDate = new DateTime(2013, 1, 31);

foreach(var date in startDate.GetDatesTo(endDate))
    Console.WriteLine(date);
于 2013-01-25T10:40:45.533 に答える
1
using System;
using System.Collections.Generic;

namespace Demo
{
    public static class Program
    {
        public static void Main()
        {
            foreach (var date in DateRange(new DateTime(2013, 01, 25), new DateTime(2013, 01, 31)))
            {
                Console.WriteLine(date.ToShortDateString());
            }
        }

        public static IEnumerable<DateTime> DateRange(DateTime start, DateTime end)
        {
            for (DateTime date = start; date <= end; date = date.AddDays(1))
            {
                yield return date;
            }
        }
    }
}
于 2013-01-25T10:41:55.697 に答える
0

linq バージョン

        DateTime[] dates = { /*...25/01/2013, 26/01/2013*/ };
        DateTime start = DateTime.Parse("25/01/2013");
        DateTime end = DateTime.Parse("31/01/2013");
        var q = (from a in dates
                 where a.Date >= start.Date && a.Date <= end.Date
                 select a).ToList();
于 2013-01-25T10:41:35.490 に答える