Ho un elenco di date che sono separate da un mese nel senso che tutte le date sono il "Primo lunedì del mese". In alcuni casi mancano mesi quindi devo scrivere una funzione per determinare se tutte le date sono consecutiveIn C#, qual è il modo migliore per trovare spazi vuoti in un array DateTime?
Quindi, ad esempio, se questo era l'elenco di date, la funzione restituiva true poiché tutti gli elementi sono il "Primo venerdì del mese "e non ci sono spazi vuoti. Questo esempio di seguito restituirebbe true.
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);
dove questo esempio di seguito potrebbe tornare falso perché, anche se sono anche tutti "Primo Venerdì del mese", la sua scomparsa la voce di marzo 2013.
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);
quindi sto cercando di capire la logica giusta per l'IsThisListConsecutive() Metodo:
Qui è stato il mio primo tentativo: (Nota so già in anticipo che tutte le date sono gli stessi del giorno della settimana e la stessa settimana del mese, quindi l'unica cosa che sto cercando è una slot mancante)
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;
}
Questo codice sopra funziona eccetto se la lista attraversa da un anno all'altro. Volevo avere qualche consiglio su un modo migliore per creare questa funzione e su come quella riga potrebbe essere riscritta per gestire date che attraversano anni.
Da dove provengono gli 'orderedSlots' nel codice? Inoltre penso che stai usando la parola "consecutiva" in un modo strano. – poke
@poke - Ho corretto il tipo nel codice attorno a orderedSlots. puoi pensare a una parola migliore da usare rispetto a "consecutivi" per attraversare quello che sto guardando a – leora
Btw. è inteso che 'date' e' date1' sono un mercoledì, ma 'date2' e' date3' sono un giovedì? – poke