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

  • Bucky Roberts

    Bucky Robert

    9 HAZİRAN 2011
  • Justin Case

    Justin Case

    3 EKİM 2011
  • Sams Page :D

    Sams Page :D

    15 Mart 2009