SORU
4 Aralık 2009, Cuma


Nasıl bir tarih aralığı döngü?

Hatta döngü için korkunç/karşı bir tür çözüm kullanmadan bunu nasıl emin değilim. Sorun şu:

Biraz harekete ihtiyacım var belirli bir aralık üzerinde iki tarih, bir başlangıç tarihi ve bir bitiş tarihi verildi ve ben. Örneğin: listedeki bir giriş oluşturmak için ihtiyacım var 3/26/2009 kadar her üç günde 3/10/2009 arasında her tarih. Benim girişler olabilir:

DateTime StartDate = "3/10/2009";
DateTime EndDate = "3/26/2009";
int DayInterval = 3;

ve benim çıkış aşağıdaki tarihlerini içeren bir liste olabilir:

3/13/2009 3/16/2009 3/19/2009 3/22/2009 3/25/2009

Nasıl böyle bir şey yapayım? Yani ayrı bir sayaç ile aralığında her gün arasında yineleme ki bu döngü için bir kullanma hakkında düşündüm:

int count = 0;

for(int i = 0; i < n; i  )
{
     count  ;
     if(count >= DayInterval)
     {
          //take action
          count = 0;
     }

}

Ama daha iyi bir yol olabilir gibi görünüyor?

CEVAP
4 Aralık 2009, Cuma


Eh, onları öyle ya da böyle döngü gerekir. Böyle bir yöntem tanımlamayı tercih ediyorum:

public IEnumerable<DateTime> EachDay(DateTime from, DateTime thru)
{
    for(var day = from.Date; day.Date <= thru.Date; day = day.AddDays(1))
        yield return day;
}

O zaman bu gibi kullanabilirsiniz:

foreach (DateTime day in EachDay(StartDate, EndDate))
    // print it or whatever

Vurabilirsin bu şekilde her gün, her üçüncü gün, vb. sadece hafta içi Örneğin, her üç günde "" tarih, sadece AddDays(1) yerine. döngü AddDays(3) diyebilirsin başlangıç ile başlayan dönmek için

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Hak5

    Hak5

    7 EYLÜL 2005
  • Jana Williams

    Jana William

    17 AĞUSTOS 2011
  • Jason Rosolowski

    Jason Rosolo

    25 EKİM 2006