0

ここでは、特定の日付範囲で日曜日を取得する必要があります。日付範囲を指定すると、SelectedStartDate は 7/1/2013 で、SelectedEndDate は 7/31/2013 で、このコードは Sundays are 7/2,7/9,7/ を返します。 16,7/23,7/30 でも予定日は 7/7,7/14,7/21,7/28 です

 static IEnumerable<DateTime> SundaysBetween(DateTime SelectedStartDate, DateTime SelectedEndDate)
    {

        DateTime current = SelectedStartDate;

        if (DayOfWeek.Sunday == current.DayOfWeek)
        {

            yield return current;
        }
        while (current < SelectedEndDate)
        {

            yield return current.AddDays(1); 

            current = current.AddDays(7);
        }

        if (current == SelectedEndDate)
        {

            yield return current;
        }

    }
}
4

3 に答える 3

4
static IEnumerable<DateTime> SundaysBetween(DateTime startDate, DateTime endDate)
{
    DateTime currentDate = startDate;

    while(currentDate <= endDate)
    {
        if (currentDate.DayOfWeek == DayOfWeek.Sunday)
            yield return currentDate;

        currentDate = currentDate.AddDays(1);
    }         
}
于 2013-07-08T16:45:31.980 に答える
3
    public IEnumerable<DateTime> SundaysBetween(DateTime start, DateTime end)
    {
        while (start.DayOfWeek != DayOfWeek.Sunday)
            start = start.AddDays(1);

        while (start <= end)
        {
            yield return start;
            start = start.AddDays(7);
        }
    }
于 2013-07-08T16:46:08.387 に答える
1

AddDaysこれは、問題を過度に複雑にすることなく、非常に簡単に実行できます。ここに私がデモンストレーションのために書いた短いスニペットがあります:

// Setup    
DateTime startDate = DateTime.Parse("7/1/2013");
DateTime endDate = DateTime.Parse("7/31/2013");

// Execute
while (startDate < endDate)
{
    if (startDate.DayOfWeek == DayOfWeek.Sunday)
    {
        yield return startDate;
    }
    startDate = startDate.AddDays(1);
}
于 2013-07-08T16:45:06.067 に答える