Tüm tarihlerin "Ayın İlk Paztası" olduğu bir ayın dışında bir tarihler listesi var. Bazı durumlarda aylar eksik olduğundan, tüm tarihlerin birbirini takip edenC# 'da, bir DateTime dizisindeki boşlukları bulmanın en iyi yolu nedir?
olup olmadığını belirlemek için bir işlev yazmam gerekiyor. Örneğin, bu tarihler listesiyse, tüm öğeler "İlk Cuma günü ay "ve boşluklar yok. Aşağıdaki bu örnek doğruya dönecektir. onlar da hepsi "Ayın ilk Cuma" olsa bile, çünkü aşağıda bu örnek yanlış dönecekti
var date = new DateTime(2013, 1, 4);
var date1 = new DateTime(2013, 2, 1);
var date2 = new DateTime(2013, 3, 1);
var date3 = new DateTime(2013, 4, 5);
var dateArray = new DateTime[]{date, date1, date2, date3};
bool isConsecutive = IsThisListConsecutive(dateArray);
, onun Mart 2013 öğeyi eksik.
var date = new DateTime(2013, 1, 4);
var date1 = new DateTime(2013, 2, 1);
var date3 = new DateTime(2013, 4, 5);
var dateArray = new DateTime[]{date, date1, date3};
bool isConsecutive = IsThisListConsecutive(dateArray);
yüzden (IsThisListConsecutive için doğru mantığı anlamaya çalışıyorum) yöntemi: İşte
benim ilk denemede oldu: (Zaten tüm tarihler haftanın aynı aynı gün olduğuna açık biliyoruz Not ayın hafta bu yüzden arıyorum tek şey eksik bir yuva) liste bir yıldan arta haçlar exept eğer işler yukarıda
private bool IsThisListConsecutive(IEnumerable<DateTime> orderedSlots)
{
DateTime firstDate = orderedSlots.First();
int count = 0;
foreach (var slot in orderedSlots)
{
if (slot.Month != firstDate.AddMonths(count).Month)
{
return false;
}
count++;
}
return true;
}
Bu kodudur. Bu işlevi oluşturmak için daha iyi bir yol hakkında tavsiyede bulunmak istedim ve bu çizginin yıllar geçtikçe tarihlerle başa çıkabilmek için nasıl yeniden yazılabileceğini öğrenmek istedim.
Kodunuzdaki 'orderSlots' nereden geliyor? Ayrıca "ardışık" kelimesini garip bir şekilde kullandığınızı düşünüyorum. – poke
@poke - Siparişi verilen kodun türünü siparişe göre sabitledim. – leora
Btw'ye baktığımda karşılaşmak için "ardışık" ile karşılaştırıldığında kullanmak için daha iyi bir kelime düşünebilirsiniz. "date" ve "date1" nin Çarşamba günü değil, date2 've date3'ün Perşembe olması amaçlanıyor mu? – poke